質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1095閲覧

railsのルーティングの説明が理解できない

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2016/12/11 16:55

1.2 コードからパスやURLを生成する
がよくわかりません。

1.2 コードからパスやURLを生成する

パスやURLを生成することもできます。たとえば、上のルーティングが以下のように変更されたとします。
get '/patients/:id', to: 'patients#show', as: 'patient'
そして、アプリケーションのコントローラに以下のコードがあるとします。
@patient = Patient.find(17)
上記に対応するビューは以下です。
<%= link_to 'Patient Record', patient_path(@patient) %>
これで、ルーターによって/patients/17というパスが生成されます。
これを利用することでビューが改修しやすくなり、
コードも読みやすくなります。このルーティングヘルパーではidを指定する必要がない点にご注目ください。

なぜpatient_pathの引数にインスタンスを渡したら/patients/17のパスが生成されるんでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

@patient(Patientのインスタンス)が
@patient=<Patient id: 17,name: 'name'...>
というようにid 17という情報を持っているからとしか
答えようがありません
patient_pathの関数内でルーティング情報と
@patientの情報からURLを生成しているだけです
railsのゆるいところはpatient_path(17)でもpatient_path(@patient.id)でも
もちろん同じURLが生成されるところです。
詳しくは
rails-github
あたりのurl_for
とかを追ってください

投稿2016/12/12 06:32

moke

総合スコア2241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問