0
我知道在这个问题上有几个帖子,但是我没有读过这里的解决方案。升级到Ruby 1.9.3后Rails 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散列,所以如果我将这些行添加到顶端,我有权访问:
- user = local_assigns [:user]
- extra_class = local_assigns [:extra_class]
我可以忍受的。但是,情况变得更糟。用户是一个ActiveRecord模型对象。然而,我不能用user.attribute表示法访问这个对象的属性。相反,我必须用户用户[:属性]。
我可以仍然除此之外,用户的某些属性实际上是方法,我不能使用user [:method]访问。
我以为它可能是3.1.12的Rails,所以我升级到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