【问题标题】:Unable to set local variables in helper method when called from a particular view从特定视图调用时无法在辅助方法中设置局部变量
【发布时间】:2012-12-21 16:25:46
【问题描述】:

似乎当我从我的一个视图调用辅助方法时,我无法设置任何新的局部变量。名字无关紧要 - 我设置的一切都是零。

从大多数观点来看,一切都很好:

editable = true
html << 'Editable: ' + editable.to_s

输出Editable: true

但是,从我的一个部分中,输出是 Editable: 表示 nil。

我试图找出这个特定视图文件的不同之处 - 发布大量文件对任何人都没有帮助。

有了这些信息(我知道这不是很多),谁能告诉我为什么我可能无法在辅助方法中设置局部变量?

【问题讨论】:

  • 会不会和partial的名字有冲突? Rails 创建了一个以模型命名的局部变量:guides.rubyonrails.org/… 但即便如此,您也应该能够覆盖它。
  • 有超过 1 个同名的冲突?我从 render :partial 中指定了文件夹,并且没有其他同名的文件。我想可能和这个问题有关:stackoverflow.com/questions/2128406/…。我正在从不同的视图调试 ivars,如果没有出现问题,我会将帮助程序代码移动到它应该在的地方。
  • 对不起,没关系,误读了问题。

标签: ruby ruby-on-rails-3


【解决方案1】:

这对我来说是一个“愚蠢的错误”,但我不能完全责怪自己。 Rails 的行为非常很奇怪。

editable = true 就在我的代码中这一行之后:

target_str == '#overview' ? target_str = '#section' : #nothing

这很奇怪,我知道。如果没有:,我会遇到错误。我已经把这条线改成了这个

target_str = '#section' if target_str == '#overview'

IMO 应该做同样的事情,但当然不会。尽管是 1 行 if,但它包含下一个语句 editable = true。这就解释了为什么它也只发生在我的一种观点上——唯一一个声明被评估为真实的观点。

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多