我有一個遠程命中的控制器,之後我的controller_action.js.erb
文件運行。在條件.js.erb文件中使用控制器設置變量
在我的控制器的操作中,我設置了一個變量@successful = true|false
(true | false基於函數的返回值)。
在我的JavaScript文件中,我想說if @successful
,並提醒操作成功或警告它不是。
任何想法如何做到這一點?
我有一個遠程命中的控制器,之後我的controller_action.js.erb
文件運行。在條件.js.erb文件中使用控制器設置變量
在我的控制器的操作中,我設置了一個變量@successful = true|false
(true | false基於函數的返回值)。
在我的JavaScript文件中,我想說if @successful
,並提醒操作成功或警告它不是。
任何想法如何做到這一點?
我說HAML一般,所以這可能不是完全正確的:
if(<%= @successful %>) {
// do stuff
} else {
// do other stuff
}
在HAML,這將是:
:javascript
if(#{@successful}) {
// do stuff
} else {
// do other stuff
}
或者,你可以這樣做:
( ERB)
<%- if @successful %>
// JS code if true
<%- else %>
// JS code if false
<%- end %>
(HAML)
- if @successful
:javascript
// JS code if true
- else
:javascript
// JS code if false
第一個選項將始終呈現在客戶端上所有的JS代碼,唯一的區別是,如果true
或false
是if
子句。
第二個選項將有條件地呈現真或假情況下的JS代碼。
試試這個
<%- if @successful %>
alert('Blabla');
<%- else %>
alert('Blabal');
<%- end %>
對不起,raphaelcm先在那裏有正確的答案。這是大部分是正確的,但有點難看,因爲你使用rails而不是javascript。 「<% - 」與「<%=」有什麼不同?我從未見過前者。 – finiteloop 2012-07-10 21:57:21
'<% - '不會顯示任何輸出,而'<%='會。 – Raphael 2012-07-11 21:47:13
我認爲不渲染輸出你只是使用'<%'是與'<% - '同義的嗎? – finiteloop 2012-07-11 23:44:40
正確答案就在於此響應。第一個代碼塊完美工作。如果你能刪除多餘的東西,你有最好的答案。 – finiteloop 2012-07-10 21:55:40
很多人使用HAML而不是ERB,似乎很有用,請留下它。有什麼不正確的我應該刪除/編輯,或者您認爲HAML是多餘的一個原因? – Raphael 2012-07-11 21:44:37
我在第二種方法中增加了ERB,並解釋了兩種方法之間的區別。 – Raphael 2012-07-11 21:53:01