1

我正在使用 Ruby on Rails 3.2.2。我想渲染一个show应该/可以根据通过参数传递给相关控制器操作的值以两种不同方式显示的视图。也就是说,如果未传递参数,show则应正常呈现视图,否则如果将该值设置为某些值,show则应呈现视图并进行一些更改(例如,某些“嵌入”的部分模板应更改,某些信息不应更改显示并添加一些其他信息)。

如何以有效/适当的方式处理这种情况?也就是说,我应该在show控制器操作和相关视图中声明条件渲染吗?还是我应该使用单独的控制器操作以便不使用/传递提到的参数?还是我应该实施一个“单独的”/“专用”控制器来处理我的“特殊”情况?


注意:就我而言,我想“以公共私人方式”显示不同的内容。

4

1 回答 1

0

这取决于这些表示的不同程度。使用两种不同的视图,您最终会得到某些可以通过共享部分处理的重复。如果私有模板与公共模板大多相似,我建议使用条件。您可以从一开始就通过添加可以像这样工作的助手来封装决策:

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

或像这样:

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

但是,如果私有和公共表示有很大不同,我建议考虑单独的控制器。差异是有原因的,并且不会以表现形式结束。

对于控制器和视图的公共部分,使用模块、助手和共享部分。

于 2012-09-07T09:31:46.373 回答