簡體   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