47
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Prefixに渡す引数とは(Rails 初学者向き)

Last updated at Posted at 2019-03-28

Railsでパスを指定する方法としてPrefixを用いるとき、引数を渡す必要がある場合をご存知ですか?

そもそもPrefixって?という方にちょっと解説を
Railsフレームワークにてアプリケーションのルーティングを設定する際に登場します。

Prefix

例えばtweetsを表示するtweetを編集するという2つのルーティングを設定するとしましょう!

ターミナルからアプリケーションのディレクトリにて以下を実行すると

$ rake routes

次のような表に示した内容が表示されると思います。

Prefix Verb URI Pattern Controller#Action
tweets GET /tweets tweets#index
edit_tweet GET /tweets/:id/edit tweets#edit

この時のパスの指定方法の一つがPrefixと言います。

##PrefixとURI Patternの違い

リンク先のルート指定にはPrefixURI Patternのどちらかを記述しますがこの時に注意すべき点があります。
それは

パスにparamsを含むかどうかです

tweets#indexを指定するパスは
/tweet

tweet#editを指定するパスは
/tweet/:id/edit
こちらのパスはどのツイートか特定するためidが必要です。

しかし、Prefixパスには、表記だけではidの情報を持ちません。

例えば、Prefixパスで指定したlinkタグを作ってみると

link_to tweet_path do     #問題なくtweet#indexへ
link_to edit_tweet_path    #RoutingError 


となります。

そこで変数を引数に渡す必要が出てきます

上記のパスを正しく書き直すと以下のように

link_to edit_tweet_path(@tweet)

ツイートのidを持った変数を引数に渡すことで、正しいパスとなります。

以上で、変数を持つ理由が理解できたと思います。

ここまで読んでいただきありがとうございます。
おかしな部分があればご指摘いただければ幸いです。

47
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?