我在Rails中創建了一個模式表單,它使用AJAX遠程提交值。rails中的遠程模態表單,不會觸發AJAX事件
由於某種原因,提交模態表單本身並不會觸發任何AJAX事件。如果我在頁面中添加完全相同的表單代碼(即不在模式中),它會在提交時觸發AJAX事件。
這裏是我的代碼:
//index.haml
= link_to 'New', new_foo_path, data: { remote: true, type: 'script'}
//_form.haml
= bootstrap_form_for @foo, remote: true do |f|
= f.text_field :bar
= f.button "Save"
//foos_controller.rb
def create
respond_to do |format|
if @foo.save
format.json { render json: @foo, status: :ok }
else
format.json { render json: @foo.errors, status: :unprocessable_entity }
end
end
end
//foo.coffee
$('#new_foo').on('ajax:success', (e, data, status, xhr) ->
console.log 'Great success'
).on 'ajax:error', (e, data, status, xhr) ->
console.log 'Great failure'
使用上面給出的代碼,允許與沒有通過驗證值提交表單時,我看到一個422錯誤。這種行爲是預期的。但是,這並不會將上述消息打印到Chrome開發人員控制檯日誌中。如果我將表單代碼添加到索引視圖本身並從那裏提交,我可以看到422錯誤以及'foo.coffee'中分配的日誌消息。
任何人都可以找到我失蹤的東西嗎?
您是否試圖在'$(document).on('ready page:load)'中包裝咖啡代碼? – AndreyS
我只是試圖做@AndreyS。沒有運氣 – Herm
@Herm你不需要提及'type:'script'',所以刪除它。但那不會解決你的問題,但不需要增加。 :) –