2016-08-18 3 views
3

フォームをリモートで送信し、検証が合格しない場合はフォーム検証エラーを表示するrailsアプリケーションを作成しました。グローバルajaxデータ型を設定するrailsリモートリンク

私のフォームは完全に機能します。私はしかし、私はそれを設定する方法は、任意のリモートリンクを壊すことがわかった。これは、グローバルAJAXデータ型を 'json'に設定したためです。この設定を削除すると、リモートリンクが機能しますが、フォームの「成功」と「失敗イベント」がトリガーされません。要約するためにここに

は私のコードです...

application.js

$.ajaxSetup({ 
    dataType: 'json' 
}) 

foo.coffee

$('#foo_form').on('ajax:success', (e, data, status, xhr) -> 
    console.log 'Great success' 
).on 'ajax:error', (e, data, status, xhr) -> 
    console.log('Great Failure') 

index.haml

= link_to "New Foo",new_foo_path, data: { remote: true} 

:使用上記のコードで私はフォームを提出できますリモートで、成功またはエラーメッセージがコンソールに記録されます。しかし、リモートリンクは、上で定義した '$ .ajaxSetup({dataType:' json '})'設定では機能しません。このコードを削除すると、リンクは機能しますが、フォームイベントはトリガーされません。

アイデア?

答えて

2

は、あなたが試してみました:

= link_to "New Foo", new_foo_path(format: :json), data: {remote: true}

を正確にリモートリンクで動作していないことを記述してください? 500、404、JavaScriptで禁止されていません?

2

フォームを送信する必要があります。アクションを指すリンクはありません。フォームデータを送信する場合は、form_forまたはform_tagおよび.submitまたはsubmit_tagビューヘルパーを使用してください。

= form_tag (new_foo_path, remote: true) do 
    = submit_tag("New Foo") 

link_toは、フォームデータについて知ることができませんアンカータグを作成します。

= submit_tag("submit", style: 'display: none;', id: 'submit_foo') 
= link_to("New Foo", "#", :onClick => "$('#submit_foo').click(); return false;") 

submit ajax form with link (StackOverflow)

:あなたはリンクとしてフォームのボタンをはめるしたい場合
関連する問題