4
class FrogsController < ApplicationController
  before_action :find_frog, only: [:edit, :update, :show, :destroy]
  after_action :redirect_home, only: [:update, :create, :destroy]

  def index
    @frogs = Frog.all
  end

  def new
    @ponds = Pond.all
    @frog = Frog.new
  end

  def create
    @frog = Frog.create(frog_params)
  end

  def edit
    @ponds = Pond.all
  end

  def update
    @frog.update_attributes(frog_params)

  end

  def show
  end

  def destroy
    @frog.destroy
  end

  private
  def find_frog
    @frog = Frog.find(params[:id])
  end

  def frog_params
    params.require(:frog).permit(:name, :color, :pond_id)
  end

  def redirect_home
    redirect_to frogs_path
  end
end

こんにちは、みんな。Railsの更新ルートがリダイレクトのafter_action(下部のカスタムメイドの方法)を家に持ち帰れない理由を誰かが私に説明できるかどうか疑問に思っていました。after_action に update を含めると発生するエラーは、「Missing template frogs/update」です。これにより、 update メソッド内に redirect_to frogs_path を手動で追加する必要があります。

ありがとう!

4

1 に答える 1

8

after_actionコールバックは、アクションがコースを実行した後にトリガーされます。レンダリングまたはリダイレクトには使用できません。メソッドを呼び出して、アクション自体の中でそれを行います。

def update
  ...
  redirect_home
end
于 2013-11-06T01:18:35.240 に答える