我用HAML取代了我的ERB文件,這很好用。但是,我有一些複雜的JavaScript和Erb代碼,當轉換爲haml時會失敗。我知道繞過haml的「:plain」選項,但是當我使用下面的代碼執行此操作時,erb代碼只是作爲文本打印出來,但未被解釋。你們有沒有解決辦法?HAML的複雜ERB替換在JS中失敗
ERB置換HAML在JS
- if (@active == "tasks")
:plain
$('#content_output').html("<div class='content_title task'></div><h3><%= I18n.t :task_all %></h3><%= escape_javascript(render('tasks/all_tasks', :tasks => @contact_tasks, :layout => 'normal')) %></div>");
$('#content_input').html("<div class='content_title task'></div><h3><%= I18n.t :task_new_title %></h3><%= escape_javascript(render('tasks/new_task')) %></div>");
$('a#tasks_tab').addClass('active');
失敗,這是原來的js.erb代碼:
<% if (@active == "tasks") %>
$('#content_output').html("<div class='content_title task'></div><h3><%= I18n.t :task_all %></h3><%= escape_javascript(render('tasks/all_tasks', :tasks => @contact_tasks, :layout => 'normal')) %></div>");
$('#content_input').html("<div class='content_title task'></div><h3><%= I18n.t :task_new_title %></h3><%= escape_javascript(render('tasks/new_task')) %></div>");
$('a#tasks_tab').addClass('active');
<% end %>
當使用:javascript,沒有任何東西被執行,點擊標籤不會刷新內容,但用:明白它的確如此,除非它顯示「<%= %>」之間的所有內容爲純文本。 – John 2012-08-07 08:32:16
哦,我剛剛注意到你已經在Javascript中嵌入了Ruby代碼。我想那裏沒有簡單的方法 - 你應該把它轉換成UJS。無論如何,這是最好的做法。 – 2012-08-07 08:58:21