在rails控制器中,即使用json响应也要设置通知

时间:2014-07-14 02:15:56

标签: ruby-on-rails ajax ruby-on-rails-4 ujs

我有一个调用我的创建操作的ajax调用。

def create
  @post = Post.create(post_params)
  respond_to do |format|
    format.js { render json: status: "success", location: post_path(@post), notice: "Post was successfully created!" }
    format.html { redirect_to @post, notice: "Post was successfully created!" }
  end
end

当我在没有ajax的情况下使用post#create时,我可以轻松设置notice以显示在下一页上。但是当我使用ajax时,我不确定如何设置通知。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

不要返回json。呈现完整的JavaScript响应。 Jquery将自动评估来自您服务器的js。在这个js中,你通常用控制器中的数据替换页面元素的一些inner_html。你可以添加一些js dom操作来显示通知。

Unobtrusive Javascript

Working with Ajax 4 Server-Side Concerns

这种技术的实现要比解析json和在客户端上添加逻辑快得多。它允许您重用现有的html partials,它们只是作为inner_html呈现到js对地方的响应中。

如果你真的想坚持使用json,你必须修改你的json repsonse以及一些关于通知的其他信息(所以只渲染一个活动的记录集合:to_json是不够的)