Ruby on rails ajax表单成功后重定向到
我有一个remote=>true的表单。 现在我的控制器看起来像:Ruby on rails ajax表单成功后重定向到,ruby-on-rails,ajax,ruby-on-rails-3,Ruby On Rails,Ajax,Ruby On Rails 3,我有一个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 =&
# 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…}或检查请求头并将_重定向到.Sheesh
我不知道最好的解决方案是什么。任何建议都会非常棒,提前谢谢
--PS--我知道以前有人问过这个问题,但没有用:。似乎有很多问题都是类似的,但没有真正的解决方案。我使用的组合生成我的响应消息和中的一些内容,并显示在now
范围内,该范围从flash哈希中删除,确保用户重新加载(在闪存显示后)它们将不会重新出现
我不认为您应该将指向restfulcreate
操作的表单设置为远程表单,因为您总是期望关键重定向,因此在我的情况下,我只需要在url段塞发生更改时重定向
我希望这会有所帮助。这不是一个解决方案,只是我处理一些同样问题的方式
致以最诚挚的问候。我认为这可能是不可能的。对Ajax请求的响应由XMLHttpRequest处理。如果返回3xx响应,XMLHttpRequest将遵循重定向本身,前提是URL来源相同。无论您如何设置标题,浏览器都无法意识到这一点。因此,唯一的方法是更改window.location使用一些Javascript。在您的场景下,我将如何从控制器操作向页面中注入Javascript。完成操作的逻辑部分后,插入如下内容:
// Checks if the article slug has changed.
// If it has the entire page should be reloaded at that new location.
<%= reload_if_slug_changed @article, params[:id] %>
// Displays the flash notices
// See ApplicationHelper#js_flash_response
<%= js_flash_response %>
render :update do |page|
page << "javascript_here"
end
render:updatedo |页面|
页面设置标题是我最初希望能够做到的。似乎无法做到!设置标题不是Rails的方式;因此,我不建议采用这种方式。这么晚了,我现在正在使用make_resourceful
,但无法在create
之后将用户重定向到正确的位置,它转到show
始终不进入(:创建)的响应执行|格式化|
并退出。有控制器代码示例吗@AaronGray@LearningROR很抱歉,我没有更多的应用程序使用make_resourceful
。我将创建一个新问题,看看您是否可以通过这种方式获得帮助。:@Arongray。非常感谢。至少您的评论更有意义,而不是没有任何人回应。:)我当前的问题没有回应的是:。任何小应用程序也可以帮助我,如果你有一个只带干控制器和模型的代码库,而不是整个项目。:)我现在正在和我的客户打交道。:(也许我遗漏了一些东西,但是AJAX表单提交的全部目的不是不需要页面加载吗?如果你要重定向,你是否可以不做一个老式的提交呢?AJAX用于检查验证和复制记录。然后用一条错误消息更新表单。当表单成功时,我就不需要了o重定向到edit_路径。该路径有图像上传和其他内容。对,但您可以在不提交AJAX的情况下进行JS表单验证。我知道通过AJAX提交的唯一原因是避免页面加载。
render :update do |page|
page << "javascript_here"
end