Я знаю, что есть несколько сообщений по этой проблеме, но ни одно из рассмотренных мной решений не помогает.Неопределенные локальные переменные в Rails 3 частичных после обновления до Ruby 1.9.3
Я только что обновил с Ruby 1.8.7 до 1.9.3p429, и теперь я получаю неопределенную локальную переменную в своих частицах.
Я зову частичный (от частичного в случае, если релевантно) таким образом:
= render :partial => 'user_name', :locals => {:user => item_user, :extra_class => "active"}
В парциальном я получить доступ к этим местным жителям таким образом:
- if(current_user and user.silhouette_user_id.to_i == current_user.silhouette_user_id)
= notranslate(current_user.full_name)
- else
- if !local_assigns[:extra_class].nil?
= notranslate(link_to(h(user.full_name), stream_url(:user_id => user.silhouette_user_id), :class => extra_class)) rescue "Anonymous"
- else
= notranslate(link_to(h(user.full_name), stream_url(:user_id => user.silhouette_user_id))) rescue "Anonymous"
= notranslate(link_to "Pro", "#", :class => "badge badge-pro", :title => "#{user.part_name} is pro") if SSO.is_pro? user
я могу получить доступ к местным жителям с помощью local_assigns hash, поэтому, если я добавлю эти строки в начало страницы, у меня есть доступ:
- user = local_assigns [: user]
- extra_class = local_assigns [: extra_class]
Я мог бы жить с этим. Однако ухудшается. user - объект модели ActiveRecord. Однако я не могу получить доступ к атрибутам этого объекта с помощью нотации user.attribute. Вместо этого у меня есть пользователь user [: attribute].
Я мог бы по-прежнему получить это, за исключением того, что некоторые атрибуты пользователя на самом деле являются методами, с которыми я не могу получить доступ, используя user [: method].
Я думал, что это может быть Rails, что было в 3.1.12, поэтому я обновился до 3.2.13 без каких-либо изменений.
Любые идеи? Может ли это быть процессором HAML? Все остальные сообщения, которые были решены, использовались ERB.
Я попробовал. Не повезло. – DSadaka
У кого-то еще эта проблема? – DSadaka
Я решил эту проблему. Это было вызвано моими пользовательскими define_new_methods для пользователя. c.f. http://stackoverflow.com/questions/17941607/devise-current-user-weird-behavior-after-upgrade-to-ruby-1-9-3/17985434#17985434 – DSadaka