我有一个调用我的创建操作的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时,我不确定如何设置通知。我怎么能这样做?
答案 0 :(得分:0)
不要返回json。呈现完整的JavaScript响应。 Jquery将自动评估来自您服务器的js。在这个js中,你通常用控制器中的数据替换页面元素的一些inner_html。你可以添加一些js dom操作来显示通知。
Working with Ajax 4 Server-Side Concerns
这种技术的实现要比解析json和在客户端上添加逻辑快得多。它允许您重用现有的html partials,它们只是作为inner_html呈现到js对地方的响应中。
如果你真的想坚持使用json,你必须修改你的json repsonse以及一些关于通知的其他信息(所以只渲染一个活动的记录集合:to_json是不够的)