Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ajax表单成功后重定向到_Ruby On Rails_Ajax_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails ajax表单成功后重定向到

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 =&

我有一个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…}或检查请求头并将_重定向到.Sheesh

我不知道最好的解决方案是什么。任何建议都会非常棒,提前谢谢

--PS--我知道以前有人问过这个问题,但没有用:。似乎有很多问题都是类似的,但没有真正的解决方案。

我使用的组合生成我的响应消息和
中的一些内容,并显示在
now
范围内,该范围从flash哈希中删除,确保用户重新加载(在闪存显示后)它们将不会重新出现

我不认为您应该将指向restful
create
操作的表单设置为远程表单,因为您总是期望关键重定向,因此在我的情况下,我只需要在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