我有一个控制器操作(我们称之为 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) ->
当然这不起作用,因为我不允许在同一个动作中渲染两次。但是接下来该怎么办?