【发布时间】:2012-04-01 09:33:32
【问题描述】:
我有一个带有 remote => true 的表单。 现在我的控制器看起来像:
# POST /items
# POST /items.json
def create
@item = @store.items.build(params[:item])
respond_to do |format|
if @item.save
format.html { redirect_to edit_admin_item_path(@item), :flash => {:success => "#{@item.name} was successfully created."} }
format.js { render :js => "window.location.href = ('#{edit_admin_item_path(@item)}');"}
format.json { render json: @item, status: :created, location: @item }
else
format.html { render action: "new" }
format.js { render :partial => 'fail_create.js.erb', :locals => { :ajax_errors => @item.errors.full_messages } }
format.json { render json: @item.errors, status: :unprocessable_entity }
end
end
end
这很有效,但感觉很笨拙。它也不允许我使用快速通知,这确实是一个悲伤的时刻。
理想情况下,我觉得我应该能够简单地使用“format.js {redirect_to...} 或检查请求标头和redirect_to。Sheesh!
我不确定最好的解决方案是什么。任何建议都会非常棒,在此先感谢!
-- PS -- 我知道之前有人问过这个问题,但无济于事:How to redirect after a successful AJAX form submission。似乎有很多类似的问题在流传,但没有真正的解决方案。
【问题讨论】:
-
也许我遗漏了一些东西,但 AJAX 表单提交的重点不是它不需要 需要页面加载吗?如果你要重定向,你可能不做一个老式的提交吗?
-
ajax 用于检查验证和重复记录。然后使用错误消息更新。当表单成功时,我想重定向到edit_path。其中有图片上传和其他事情。
-
对,但是您可以在不提交 AJAX 的情况下进行 JS 表单验证。我知道通过 AJAX 提交的唯一原因是避免页面加载。
标签: ruby-on-rails ajax ruby-on-rails-3