0

コントローラーアクション(some_controller_actionと呼びます)があり、json(javascriptが取得するため)をレンダリングすると同時に、some_controller_action.js.erbを使用してパーシャルを更新/再レンダリングする必要があります。

私のコード提案は次のようなものです:

def some_controller_action

  #
  # lots of code here
  #

  respond_to do |format|
    render :json => {:something => something}, :status => :ok
    format.html {
      redirect_to somewhere
    }
    format.js
  end
end

クライアント側のajax/javascriptはこのアクションをトリガーし、応答としてjsonを受け取ります。次のようになります。

someCoffeescripAction = ->
  $.ajax
    type: "post"
    dataType: "json"
    data:
      some_data_name: some_data_content
    url: "some_url/some_controller_action"
    success: (data, status, xhr) ->
      do_something_with_the_response(data)

    error: (xhr, textStatus, errorThrown) ->

もちろん、同じアクションで2回レンダリングすることは許可されていないため、これは機能しません。しかし、それでは何をすべきでしょうか?

4

1 に答える 1

1

あなたのJavaScriptはどのように見えますか?コントローラーアクションをajaxでフェッチしますか?その場合は、ajax呼び出しが完了するまで待ってから、フェッチしたばかりのjsonデータを使用するか、別のajax関数を呼び出すことにより、パーシャルの再レンダリングをトリガーする必要があります。

于 2013-03-27T10:01:15.587 に答える