1

Ruby on Rails 3.2.2 を使用しています。showパラメータを介して関連するコントローラ アクションに渡される値に応じて、2 つの異なる方法で表示する必要がある、または表示できるビューをレンダリングしたいと考えています。つまり、パラメーターが渡されない場合、showビューは通常どおりレンダリングされます。それ以外の場合、その値が何かに設定されている場合は、いくつかの変更を加えてshowビューをレンダリングする必要があります (たとえば、一部の「埋め込まれた」部分テンプレートは変更する必要があり、一部の情報は変更しない必要があります)。表示され、その他の情報を追加する必要があります)。

この状況を効率的/適切な方法で処理するにはどうすればよいですか? つまり、showコントローラー アクションと関連するビューで条件付きレンダリングを記述する必要がありますか? または、上記のパラメーターを使用/渡さないように、別のコントローラーアクションを使用する必要がありますか? または、「特定の」ケースを処理するために「別の」/「専用」コントローラーを実装する必要がありますか?


注:私の場合、「公開または非公開の方法で」さまざまなコンテンツを表示したいと考えています。

4

1 に答える 1

0

これらの表現がどの程度異なるかによって異なります。2 つの異なるビューを使用すると、共有パーシャルで処理できる特定の重複が発生します。プライベート テンプレートとパブリック テンプレートがほぼ同じである場合は、条件付きを使用することをお勧めします。次のように機能するヘルパーを追加することで、最初から決定をカプセル化できます。

<% if private_view? %>
  ...
<% else %>
  ...
<% end %>

またはこのように:

<%= show_only_when :private do %>
  ...
<% end %>

ただし、プライベートとパブリックの表現が大きく異なる場合は、別のコントローラーを検討することをお勧めします。違いには理由があり、表現にとどまりません。

また、コントローラーとビューの共通部分には、モジュール、ヘルパー、および共有パーシャルを使用します。

于 2012-09-07T09:31:46.373 に答える