繁体   English   中英

js.erb中的实例变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM