0

私は現在 Beginning Rails 3 を読んでいます。リダイレクトについて質問があります。この本には、パスに対して「redirect_to はオブジェクトをパラメーターとして受け取ることもできる」と記載されています。したがって、彼らが与える例は

redirect_to(@article)

と同等のショートカットです

redirect_to(article_path(:id => @article))

私はこれを理解しているかどうかわかりません。:id => @article という行は正確には何を言っているのでしょうか?

ありがとう、マイク

4

3 に答える 3

1

redirect_to(@article)のショートカットです redirect_to(article_path(@article))。Rails は@article変数からクラス名を抽出するため、これを行うことができますsend("#{@article.class.name.downcase}_path")

redirect_to(article_path(@article))は のショートカットでredirect_to(article_path(:id => @article))、これは のショートカットですredirect_to(article_path(:id => @article.to_param))。基本的に Rails は、@article は ActiveRecord オブジェクトであり、その魔法の値について尋ねto_paramます。デフォルトでは、to_param単に記事の ID を返しますが、これを上書きして、スラッグやナイスネームのように返すことができます38-hello-world

つまりredirect_to(@article)、記事があるので、記事へのパスが必要であり、記事のリソース識別子 (または) が必要to_paramです。

次に、URL を構築します。

于 2012-05-17T01:07:00.987 に答える
0

:id => @articleは のショートカットで、表示する記事を:id => @article.to_param指定するだけです。

于 2012-05-16T23:32:31.497 に答える
0

まず、rake routesコンソールで実行します。アプリのルートのリストが表示されます。article
というルートがあります。

article_pathルート記事へのリンクです。

を実行することで、値を持つパラメーターを(:id => @article)渡します。id@article

于 2012-05-16T23:32:34.847 に答える