根据我在其他几个问题中所阅读的内容,我的控制器中定义的实例变量应该可以在我的js.erb
文件中访问。他们不是。注意:我没有尝试渲染部分 - 只是访问变量的(字符串)内容,然后我将应用于div。
如果不是nil,我的变量显示为true
并且如果我对它们使用j
(javascript转义),则会在gsub上崩溃,但在某些情况下 - 但这很接近能够区分在它们为零且存在于js.erb
文件中之间。如果它们存在,我会在an empty string
的firebug-console中返回console.log()
。
例如:
控制器代码
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崩溃并告诉我变量不存在,正如预期的那样。
答案 0 :(得分:5)
在结果 HTML 中缺少评估文本的主要原因是在评估运算符中忘记了等号。为了 ERB 文本处理器插入一个ruby代码的值,请确保您使用了以下格式:
<%= @myvar %>
而不是:
<% @myvar %>
第二个案例表单只需要在ERB模板中执行ruby代码,而不是结果插入:
<% @myvars.each do| myvar | -%>
<p></p>
<% end %>
在类似的原因中,始终首先检查评估运算符中的等号。
答案 1 :(得分:1)
console.log('<%= @myvar %>');