2017-07-05 7 views
0

私はRailsチュートリアルで作業していますが、ルートヘルパーがパラメータとして持つことができる値がわかりません。Railsのルートヘルパーはどのような値をパラメータとして持つことができますか?

「article_path」のパラメータとして「article」を使用するのが正しいのはなぜですか?以下のルートで

<ul id=“articles”> 
    <% @articles.each do |article| %> 
     <li> 
      <%= link_to article.title, article_path(article) %> 
     </li> 
    <% end %> 
</ul> 
+1

パラメータがコントローラに来るときにオブジェクト全体をパラメータとして渡すので、コントローラはIDフォームパラメータを取得し、特定のレコードを与えます。 –

答えて

2
article_path(article) 

パラメータがコントローラに来たときに、パラメータとして、オブジェクト全体を渡しているので、コントローラは、パラメータからIDを取得し、特定のレコードを与える有効なです。

article_path(article.id)を標準的な方法で使用することをお勧めします。記事モデル(表)にフィールド数があると、すべてのフィールドがパラメータに渡されるためです。

+0

したがって、(article.id)をパラメータとして使用することをお勧めします。その場合、パイプ間の値はどうなりますか?パラメータがarticle.idで、パイプ間の値がアーティクルになるようです。 – Robert

+0

パイプ?この 'article_path(article.id)'のように渡すと、paramsはidだけを持ち、余分な値はありません。 –

+0

私は| article |の値を参照しています。 <%@ articles.each do |記事| %>それは| article.id | ?それとも、記事として残すべきか| ? – Robert

1

article_path(article) 

あなたは、オブジェクト全体またはarticle.id両方が有効であるとしてarticleを渡すことができます。

+0

article.idよりも優先される記事ですか?後者は私にとっては直感的ですが、どれが従来の方法であるか不思議でした。 article.idの場合、パイプ間のオブジェクトもarticle.idでなければなりませんか? – Robert

+0

@Robertあなたは何かを渡すことができますが、オブジェクトから全オブジェクトとコントローラのフェッチIDを渡すので、 'article'が最適です。 – puneet18

関連する問題