一画面に対して複数のモデルオブジェクトを渡したいケースは多々あると思います。
現状私が書いているコードですと以下のような状態になっています(userとtask間にはリレーションは張られていないとします)
#users_controller def index @user = User.all @task = Task.all end
<!--users/index.html.erb --> <% @user.each do |user| %> #省略 <% end %> <% @task.each do |task| %> #省略 <% end %>
例えばこのようにUserオブジェクトの全件と、Taskオブジェクトの全件を一つのviewに表示したい際以上のような実装をしています。
勿論クラスオブジェクトがこのように少量ですといいと思いますが、表示したいものに逐一コントローラー側でインスタンス変数に格納し渡してあげるのも可読性が低まるのかなと感じています。
そこで一つのインスタンス変数にまとめて渡したいと考えたのですが、やり方がよく分からないです。
以前インターン先で使っていたasp.net mvcに触れていた際、このようなケースの際はviewmodelというフォルダにviewmodelクラスを作成し表示していたのを見たことがあったのですが、railsでどう適用したらいいのかがよくわかりません。
viewmodelの概念は様々な解釈があるそうですが、rails viewmodelで調べるとdecorator、presentationパターンといったviewのロジックを制御する話ばかり出てきてしまい中々欲しい情報にたどり着けません。
そこで質問なのですが、このように複数のモデルをバインドして一つのインスタンス変数として定義させるにはどうすればいいのでしょうか?
またこのようなロジックをスッキリ書くよい方法はないでしょうか?それともある程度は致し方ないのでしょうか?
よろしくお願い致します
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。