我知道有几个关于这个问题的帖子,但我在这里阅读的解决方案都没有帮助。
我刚刚从 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 哈希访问本地人,所以如果我将这些行添加到顶部,我可以访问:
- 用户 = local_assigns[:user]
- extra_class = local_assigns[:extra_class]
我可以忍受。然而,情况变得更糟。user 是一个 ActiveRecord 模型对象。但是,我无法使用 user.attribute 表示法访问此对象的属性。相反,我必须使用用户 [:属性]。
除了 user 的某些属性实际上是方法,我无法使用 user[:method] 访问之外,我仍然可以解决这个 问题。
我认为可能是 Rails,它是 3.1.12,所以我升级到 3.2.13,没有任何变化。
有任何想法吗?会不会是 HAML 处理器?所有其他已解决的帖子都使用了 ERB。