Got Some \W+ech?

Could be Japanese. Could be English. Android, セキュリティ, 機械学習などをメインに、たまにポエムったり雑感記載したりします。

Railsで1対他のリレーションになっているモデル・コントローラにパラメタを渡したい

  • 最近、所用でRailsでWebアプリを作っているので、その時にぶちあたったメモ
  • 今回は下記をしようと思っています
    • モデルAはモデルBをhas_manyしている
    • モデルBのmodels_pathにアクセスする時、モデルAに紐づくモデルBのみを表示したい

詰まってたこと

  • 例えばViewで下記のようなリンクで、indexに飛ばしたいとすると、idが無いというエラーがでた
<%= link_to 'Bデータ', models_path(a_id) %>
def index
    @models = ModelB.find(params[a_id])
  end

解決

  • ROUTINGに下記を記載。そうすると、 /モデルA/A.id/モデルBへのルーティングが形成される。
  • これをリンクに貼り付ければおk
resources :As do
    resources :Bs
  end
2.2.1 :098 > app.A_Bs_path(1)
 => "/As/1/Bs" 
2.2.1 :099 >