[英]Instance Variables in js.erb
根据我在其他几个问题中所读的内容,应该可以在js.erb
文件中访问在控制器中定义的实例变量。 他们不是。 注意:我不是要渲染部分内容-只是访问变量的(字符串)内容,然后将其应用于div。
如果不是nil,则在某些情况下,如果我在变量上使用j
(javascript转义),我的变量将显示为true
并在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崩溃,并告诉我该变量不存在,正如预期的那样。
结果HTML中缺少评估文本的主要原因是在评估运算符中忘记了等号。 为了向ERB文本处理器插入一个ruby代码值,请确保您使用以下形式:
<%= @myvar %>
代替:
<% @myvar %>
第二种情况是只需要在ERB模板中执行ruby代码,而不需要插入结果:
<% @myvars.each do| myvar | -%>
<p></p>
<% end %>
在类似的原因中,总是首先检查评估运算符中的等号。
console.log('<%= @myvar %>');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.