0

remote => true私はいつもフォームにレールを使用しています。jqueryではとを使用'ajax:before''ajax:success'てページ上のイベントを取得し、コントローラーでは次のようにしてajaxまたはhtml呼び出しに応答します。

format.html{
    redirect_to xxxx_path
}
format.json { 
    render :json => { :something => true }
}

しかし、私はリモートをリンクにtrueにすることに関して多くの問題を抱えているようです。

リンクにリモートtrueを設定すると、コントローラーで、formal.json(以下)を実行した場合に応答します。何もトリガーされません。

format.json { 
    render :json => { :something => true }
}

そして私がそうするなら:

format.js{  }

…コントローラーでは、jqueryに応答があります。ただし、'ajax:success'イベントは呼び出されず、のみ'ajax:complete'が呼び出されます。これは正しくありません。

Rails 3にリモートリンクを設定するにはどうすればよいのでしょうか。リンクがリモートの場合でも、通常のhtml呼び出しの場合でも、コントローラーで異なる方法で応答できます。したがって、リモートリンクの場合はjsonで、通常のリンクの場合はhtmlで応答します。そして、jqueryに「ajax:success」応答を取得させるにはどうすればよいですか。私はそれがすべてどのように機能するかについて少し混乱しています。

ありがとう!

4

2 に答える 2

1

質問を絞り込んでコードを提供していただけますか?

上記では、「ajax:before」は「ajax:beforeSend」である必要があります。

コントローラでは、リクエストがajaxであるかどうかを、次のようなものでテストできます。

if request.xhr?
  render nothing: true
else
  redirect_to @your_object
end

コントローラーが何に答えるべきかを確実に知るために、リモートリンクにフォーマットを追加する必要があります

:'data-type' => 'html'
于 2013-03-13T16:48:09.907 に答える
0

おそらくURLでフォーマットjsonを指定する必要があると思います。

例えば

<%= link_to some_path(format: :json, remote: true) %>
于 2013-03-13T16:46:22.200 に答える