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