「show」、「show_modify」という2つのアクションを持つコントローラーがあります。これらは非常に似ていますが、わずかに異なるビューを持っています。つまり、show_modify には異なるdiv
クラスがあり、追加のリンク/ボタンなどがあります。
私が見てきたことから、レールでこれにアプローチするにはいくつかの方法があります。
2 つのテンプレートを 1 つ作成し、内部に条件を追加するだけです。
<% if param[:action]=="show_modify"> <% ... %> <% end %>
それでも、非常に多くの違いがあるため、これは非常に見苦しく繰り返しのように見えます。また、これは教会と国家の分離に対するある種の違反でもあります (私は MVC の専門家ではありません...)。
部分的な方法: 異なって表示される要素ごとに、アクションごとに 1 つずつ、2 つの部分を作成します。ビューは次のようになります。
# show_modify render :partial '_general_stuff' render :partial => '_blabla_show_modify' # show render :partial => '_general_stuff' render :partial => '_blabla_show' `
ただし、重複する要素があるため、これは DRY に違反します。サブパーシャルをさらに作成し続けることはできますが、基本的にはタートルを最後まで使用することになります。繰り返したくない場合は、最終的には if/else を実行する必要があります。
地元の人々とのパーシャル:
if show render :partial = '_blabla', :locals => {:bckgrnd => 'blue', :button => 'yes' ....}
しかし、これは別の多くの場合の解決策です....
より良いオプションはありますか?content_for
多分?私は一種のRails初心者なので、何かを完全に見逃しているかもしれません....