我有一個運行rails 2.3.8的RoR應用程序,它使用Rails 3風格的UJS綁定數據遠程窗體而不是使用form_for_remote,控制器響應一個js.erb來自服務器的文件。Rails UJS在IE中渲染js.erb模板
在FF,Chrome和Safari中都很漂亮,但在IE中運行時會提示您保存文件並不執行JS。到目前爲止,我的研究沒有發現任何可能的原因,所以任何幫助將不勝感激!
這裏是我的控制器操作:
def create
@note = Note.create(params[:note].merge(:author_id => current_user.id))
respond_to do |format|
format.js {}
end
end
我也試過,而不是具有相同結果的respond_to塊這樣的:
render :template => "notes/create.js.erb", :content_type => 'text/javascript'
而且我create.js.erb:
$('#notes').append('<%= escape_javascript(render(:partial => "notes/note", :locals => {:note => @note}))%>');
$('.new_note textarea').val('');
這一切都非常簡單直接,我真的沒有得到什麼問題與IE瀏覽器。
感謝您的幫助!
編輯:
的Form帖子注:
<% form_for @note, :url => notes_path, :html => { 'data-remote' => true, :class =>
'new_note'} do |f|%>
<%= f.hidden_field :parent_id %>
<%= hidden_field_tag :note_type, note_type%>
<%= f.text_area :body, :size => size%>
<br/>
<%= f.submit "Add Note"%>
<% end %>
而且rails.js的relelvent部分:內容類型:
$('form[data-remote]').live('submit', function (e) {
$(this).callRemote();
e.preventDefault();
});
/**
* Handles execution of remote calls firing overridable events along the way
*/
callRemote: function() {
var el = this,
method = el.attr('method') || el.attr('data-method') || 'GET',
url = el.attr('action') || el.attr('href'),
dataType = el.attr('data-type') || 'script';
if (url === undefined) {
throw "No URL specified for remote call (action or href must be present).";
} else {
if (el.triggerAndReturn('ajax:before')) {
var data = el.is('form') ? el.serializeArray() : [];
$.ajax({
url: url,
data: data,
dataType: dataType,
type: method.toUpperCase(),
beforeSend: function (xhr) {
el.trigger('ajax:loading', xhr);
},
success: function (data, status, xhr) {
el.trigger('ajax:success', [data, status, xhr]);
},
complete: function (xhr) {
el.trigger('ajax:complete', xhr);
},
error: function (xhr, status, error) {
el.trigger('ajax:failure', [xhr, status, error]);
}
});
}
el.trigger('ajax:after');
}
}
服務器響應文本/ JavaScript的; charset = utf-8
我試過顯式設置rails.js helper的數據類型,但是這並沒有改變任何東西。
在哪個IE版本中不起作用?我用IE8檢查它,它適用於我(rails 2.3.8,jquery UJS,HAML模板,並且在'respond_to'塊中的'format.js'後沒有'{}'。) – Voldy 2010-09-25 15:03:14
這對我而言IE8兼容模式,我也嘗試在我的format.js上丟失{},但是我得到相同的結果,它會提示保存文件。 – Chelsea 2010-09-25 16:33:41
你可以顯示「創建」的鏈接嗎? 'head'裏有什麼javascript? – Voldy 2010-09-25 19:05:50