0

我正在使用 Ruby on Rails 3.2.2,并且由于我的系统实现,我想生成不同的输出(在视图中)和/或检索不同的记录(在控制器中)取决于“访问者用户授权(对于例如,授权可能取决于“访问用户是否是当前“访问者用户)。

我该如何处理这种情况?也就是说,例如,为了处理用户是否是当前用户并显示不同的内容,我应该为每种情况实现两个视图文件和/或控制器操作,还是应该if else直接在视图文件中使用语句和/或在控制器动作中?

4

2 回答 2

0

我通常在视图中使用 if else 语句,如果语句之间有很多标记以保持干净,则呈现部分语句。

这是一种风格选择,因此如果您发现您在每个页面上都创建了大量条件,那么您可能需要在控制器中重新考虑您的组织,甚至创建一个新资源。对于简单的事情,比如如果用户是管理员,则添加“编辑”或“删除”按钮,我会在视图中使用条件。

对于 .html.erb 标记,您可以像这样执行普通的 if/else 块:

<% if <condition> %>
  <%= render 'partial_name' %>
<% else %>
  <p>Some other content</p>
<% end %>

条件是您的条件,例如current_user? @user

于 2012-07-31T18:04:17.343 回答
0

我建议的一种更简洁的方法是为用户创建不同的角色并将它们分组。因此,对于该特定组,您可以拥有单独的视图文件和控制器。这种方法的一个优点是它很容易阅读代码,我们可以很容易地理解代码。我们可以轻松地对页面进行更多控制,而不必担心其他用户。我们甚至可以避免对许多过滤器的需要。但是如果只有两种类型的用户,则可以使用 if else 语句轻松管理,因此选择正确的方法也将取决于问题。

于 2012-07-31T18:46:50.983 回答