0

我知道有几个关于这个问题的帖子,但我在这里阅读的解决方案都没有帮助。

我刚刚从 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。

4

1 回答 1

1

尝试使用这种方式渲染局部(这是 Rails 3 的正确方式):

= render 'user_name', user: item_user, extra_class: "active"

user并使用和访问对象extra_class

于 2013-07-21T23:09:59.617 回答