【问题标题】:Instance Variables in js.erbjs.erb 中的实例变量
【发布时间】:2013-12-29 17:59:24
【问题描述】:

根据我在其他几个问题中阅读的内容,我在控制器中定义的实例变量应该可以在我的 js.erb 文件中访问。他们不是。注意:我不是要渲染部分内容 - 只是访问变量的(字符串)内容,然后我会将其应用于 div。

如果不是 nil,我的变量会显示为 true,如果我在它们上使用 j(javascript 转义),则在某些情况下,我的变量会在 gsub 上崩溃 - 但这接近于能够区分它们的时间nil 并且存在于js.erb 文件中。当它们存在时,我会在 console.log() 上的 firebug-console 中返回 an empty string

例如:

控制器代码

def myCntlMethod
   @myvar = "MyVarTest"
   respond_to do |format|
     format.js
   end
end

js.erb 代码:

console.log('<% @myvar %>');

Firebug 中的结果:

(一个空字符串)

也试过了

console.log('<% j @myvar %>');

在这种情况下,结果相同 - 如果我进行检查或呈现会崩溃?还有……

console.log('<% j myvar %>');

rails 崩溃并告诉我变量不存在,正如预期的那样。

【问题讨论】:

    标签: ruby-on-rails ruby view erb


    【解决方案1】:

    结果HTML中缺少评估文本的主要原因是评估运算符中忘记了等号。为了向 ERB 文本处理器插入一个 ruby​​ 代码的值,请确保您使用了以下形式:

    <%= @myvar %>
    

    代替:

    <% @myvar %>
    

    第二种情况只需要在 ERB 模板内执行 ruby​​ 代码,不需要插入结果:

    <% @myvars.each do| myvar | -%>
      <p></p>
    <% end %>
    

    在类似的原因中,总是首先检查评估运算符中的等号。

    【讨论】:

      【解决方案2】:
      console.log('<%= @myvar %>');
      

      【讨论】:

        猜你喜欢
        • 2010-10-31
        • 1970-01-01
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-21
        相关资源
        最近更新 更多