スキャフォールドを生成すると、次のようなコントローラーが作成されます (一部のコードを削除しましたが、まだ機能します)。
def create
@post = Post.new(params[:post])
if @post.save
redirect_to @post
end
end
これにより、すべて正常に動作する /posts/ idにリダイレクトされます。
しかし、これがどのように機能するのかわかりません。@post
はモデル クラスのインスタンスですが、リダイレクト先のコントローラーとアクションをどのように知るのでしょうか? この関係が (Post
モデルとの間でPostsController
) 明示的に定義されている場所はどこにもありません。
url_for
これをスキャフォールディングせずにゼロから複製しようとしましたが、定義したモデルに関連付けられていないというエラーが表示されます。resources
in でルートを定義する場合でもroutes.rb
。