質問: Patient.find(17) > > 上記に対応するビューは以下です。 > > <%= link_to 'Patient Record', patient_path(@patient) %> > > これで、ルーターによって/patients/17というパスが生成されます。 > > これを利用することでビューが改修しやすくなり、 > > コードも読みやすくなります。このルーティングヘルパーではidを指定する必要がない点にご注目ください。 > > > なぜpatient_pathの引数にインスタンスを渡したら/patients/17のパスが生成されるんでしょうか?
回答: @patient(Patientのインスタンス)が @patient= というようにid 17という情報を持っているからとしか 答えようがありません patient_pathの関数内でルーティング情報と @patientの情報からURLを生成しているだけです railsのゆるいところはpatient_path(17)でもpatient_path(@patient.id)でも もちろん同じURLが生成されるところです。 詳しくは rails-github あたりのurl_for とかを追ってください