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) ->

当然这不起作用,因为我不允许在同一个动作中渲染两次。但是接下来该怎么办?

4

1 回答 1

1

你的 javascript 是什么样的?您是否通过 ajax 获取控制器操作?如果是这样,那么您只需要等到 ajax 调用完成,然后通过使用刚刚获取的 json 数据或调用另一个 ajax 函数来触发您的部分的重新渲染。

于 2013-03-27T10:01:15.587 回答