4

私のコントローラーには、次のものがあります。

class TestController < ApplicationController
  respond_to :html, :json

  # code...

  def create
    @test = current_user.tests.create(params[:test])
    respond_with @test, location: tests_url
  end

  # code...

end

かっこいいです。作成すると(期待どおりに)testリダイレクトされます、を押すと、ブラウザからフォームの再送信を求められます。test#indexF5

locationステートメントを削除すると、respond_with問題なく機能しますが、目的のURLに移動しません。

どうすればこれを修正できますか?

前もって感謝します。


編集

メソッドをに変更します

@test = current_user.tests.new(params[:transaction])
respond_with(@test) do |format|
  format.html { redirect_to "/tests/" } if @test.save
end

そしてそれは動作します..しかし、それは私が.の代わりに文字列を使用しなければならなかったのはちょっと奇妙ですtests_url


編集2

この完全なサンプルコードバグレポートを参照してください。


編集3

Ruby 1.9.3-p327では再現できませんが、-p385でしか再現できません。

4

1 に答える 1

0

redirect_to次のように、メソッドを使用できます。

def create
  @test = current_user.tests.create(params[:test])
  respond_with @test do |format|
    format.html { redirect_to tests_path }
  end
end

次に、クライアントが json 応答を要求すると、デフォルトのto_json動作がトリガーされますが、必要な応答形式が html の場合はリダイレクトが送信されます。

于 2013-02-13T20:29:23.120 に答える