正如大家都知道Rails框架建議通過所謂的UJS嚴格分離JavaScript和Html,但有時我發現自己需要在我的Views中包含JavaScript的即興片段。 首先,我想知道這是否正確?還是皺起了眉頭?使用Rails 3.2,應該避免在視圖中包含條件JavaScript?
中,我覺得自己這樣做的最常見的情況是,當例如我有一個條件塊像這樣的:
= form_for @place do |f|
%h5 Address:
.input-prepend
%span{ :class => "add-on" }
%i{ :class => "icon-road" }
= f.text_field :address
%h5 Name:
.input-prepend
%span{ :class => "add-on" }
%i{ :class => "icon-pencil" }
= f.text_field :name
= f.hidden_field :latitude
= f.hidden_field :longitude
#post-button
%button{ :class => "btn btn-primary", :type => "submit" } Post it!
- unless logged_in?
:javascript
$('#post-button > button, .input-prepend input').addClass('disabled');
$('.input-prepend input').addClass('disabled');
$('.input-prepend input').attr('disabled', 'disabled');
new PopOver().setPopOver($('#post-button > button'), "You must be logged in to register your Business");
看看嵌套的,除非條件中的代碼,我想知道是否它是好的有它,或者應該以某種方式生成控制器的那部分代碼?(並將它傳遞給視圖:在這種情況下,我不知道該怎麼做...)
請讓我知道你的想法,我需要知道最有經驗的Rails開發人員會處理這種類型的情況,所以,如果你是一個我想讀你的答案。
在此先感謝!
PS。哦,請讓我看看代碼選項,如果可能的話,你將如何解決這個問題,再次感謝!
有趣,但讓我們看看我是否得到了這個權利...你是說 裏面:JavaScript我讓$ .get Ajax調用?並根據響應我渲染一個部分? 感謝您的回覆。 – jlstr 2012-05-25 15:40:14
我會親自爲您的頁面創建一個JavaScript文件(如果您正在使用資產管道,則在'assets/javascripts'中)您將進行$ getScript()調用。只要您訪問該頁面,該文件就會運行。從那裏,你可以a)讓控制器根據特定條件選擇要渲染的.js.erb文件,或者b)有一個類似於上面的文件的.js.erb文件,其中運行的JavaScript會有所不同取決於實例變量,控制器變量等。後者更直接,在我看來。 這會讓js完全脫離你的HAML。 – Justin 2012-05-25 16:41:16
這聽起來很合理,但我想很難將你正在談論的情況(在這種情況下是否已登錄或未登錄)傳遞給javascript,對不對?如果可能的話,我希望看到一些代碼片段。 再次感謝賈斯汀。 – jlstr 2012-05-25 17:27:13