I am having the same problem with Rails 3.0.3. If you don't require
context-dependent labels, you can use
en.activerecord.attributes.activity.some_field_here (notice it is not
nested inside the person model).
However, I have not found any workaround if your label IS context
dependent, and I believe it should probably be filed on lighthouse.

Garrett

On Nov 28, 9:17 pm, Paul Schreiber <[email protected]> wrote:
> Note: I am using Rails 2.3.10.
>
> Normally, you can use Rails’ I18n system to generate label text.
>
> For example, suppose you have a Person class with a name attribute. And this 
> ERB:
> <%= form_for @person do |f| %>
> <%= f.label :name %>
> <%= f.text_field :name %>
> <% end %>
>
> And you’d construct your en.yml like so:
> en:
>   helpers:
>     label:
>       name: “your name”
>
> However, this doesn’t work very well with related objects and 
> accepts_nested_attributes_for. Suppose you have the same Person class as 
> before. And person has_many :activities (likewise, activity belongs_to 
> :person) and accepts_nested_attributes_for :activities.
>
> Now your ERB looks like this:
> <%= form_for @person do |f| %>
> <%= f.label :name %>
> <%= f.text_field :name %>
>         <% f.fields_for :activities do |a| %>
>                 <%= l.label :difficulty %>
>                 <%= l.text_field :difficulty %>
>         <% end %>
> <% end %>
>
> Various combinations indentation of person / activities / difficulty in my 
> en.yml file didn’t work. So I looked inside rails to see what’s going on.
>
> The relevant code is in 
> actionpack-2.3.10/lib/action_view/helpers/form_helper.rb. The method used is  
>     
>         def to_label_tag(text = nil, options = {})
> on line 758.
>
> And the code doing the work is:
>         content = if text.blank?
>           i18n_label = I18n.t("helpers.label.#{object_name}.#{method_name}", 
> :default => “”)
>           i18n_label if i18n_label.present?
>         else
>           text.to_s
>         end
>
> The problem is you end up with a set of labels like:
>         helpers.label.person[activities_attributes][0].difficulty
>         helpers.label.person[activities_attributes][1].difficulty
>         helpers.label.person[activities_attributes][2].difficulty
>
> Is there a way you can put wildcards in YAML? If not, is there some other way 
> around this limitation? If not, this seems like a bug in Rails, and I’ll file 
> a lighthouse ticket.
>
> Paul
>
>  smime.p7s
> 4KViewDownload

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to