js.erb中的实例变量

时间:2013-12-29 17:59:24

标签: ruby-on-rails ruby view erb

根据我在其他几个问题中所阅读的内容,我的控制器中定义的实例变量应该可以在我的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崩溃并告诉我变量不存在,正如预期的那样。

2 个答案:

答案 0 :(得分:5)

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

<%= @myvar %>

而不是:

<% @myvar %>

第二个案例表单只需要在ERB模板中执行ruby代码,而不是结果插入:

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

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

答案 1 :(得分:1)

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