Help us understand the problem. What is going on with this article?

Prefixに渡す引数とは

More than 1 year has passed since last update.

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を持った変数を引数に渡すことで、正しいパスとなります。

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

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

akk11_k
目に優しいモニターないかな
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした