###前提・実現したいこと
Jobsモデルがあり、カラムには職業名が入っています。
Jobsモデルのカラムの職業と同名のモデルがあります。
例:
Job name:"Police","Rescue"
Police job_type: "guard","driver","etc","etc"...
Rescue job_type: "driver","ladder","medical","etc","etc"...
indexからjobsの一覧を表示させて、showを開いたときに、カラムに登録されたjob_typeと一致するモデルのデータ一覧を表示したい。
###該当のソースコード
views/jobs/index <% @jobs.each do |job| %> <%= link_to job.name %> <% end %>
job.nameのlinkをクリックしshowへ移動。
views/jobs/showの中身 <strong>Name:</strong> <%= @jobs.name %> <strong>役割</strong> <!--ここへ@jobs.nameと同じモデル名の役職データを出力したい -->
表示例: name:Police ・guard ・driver ・etc...
###試したこと1
Jobクラスへ has_many :polices, has_many :rescuesと記述
policeクラスへ belongs_to :job,rescueも同様
そこから、showへ記述しようにも、どうやって記述するのやら途方に暮れる
この質問を参考にしてみるも、この場合は対象のモデル名がarticleと解っているが、今回は選択毎に変わるので解らない・・・
###試したこと2
これで、動くのは動いたけど・・・・すっきりしない
jobコントローラー def show class_name = ActiveRecord::Base.connection.tables.grep (@user.name) #set_paramsで取得した:idの名前と、同じモデルを探してくる job = Object.const_get(class_name[0].capitalize)#オブジェクトに変換 @jobs = job.all end
views/jobs/showの中身 <strong>Name:</strong> <%= @user.name %> <ul> <% @jobs.each do |job| %> <li><%= job.job_type %></li> <% end %> </ul>
実際の画面 Name: police ・guard ・driver ・etc
###悩み
試したこと1の参考のようなスマートな方法を教えてください。
回答1件
あなたの回答
tips
プレビュー