如何使用AJAX(Rails)渲染json并同时刷新部分

时间:2013-03-26 20:28:32

标签: ajax json ruby-on-rails-3

我有一个控制器动作(让我们称之为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) ->

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

1 个答案:

答案 0 :(得分:1)

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