0

我目前正在创建一个包含 3 个主要资源的应用程序::products、、、:contacts:items访问者只能通过公共 RESTful 方法(例如index和)访问它们show

另一方面,登录用户可以访问任何 RESTFul 操作。问题在于,根据访问者或用户的不同,视图index和视图是不同的。show

我的问题是,实际上我正在考虑将我的控制器复制到user 仅与登录用户相关的命名空间中。我知道这不是一个好主意,因为它根本不干。

我应该怎么做才能保持一个控制器来实现这一目标?或者围绕它的最佳实践是什么?

非常感谢

4

1 回答 1

0

如果登录用户和未登录用户可以看到的内容之间只有微小的差异,只需在您的视图中添加一些条件:

<% if logged_in %>
  <p>You are logged in!</p>
<% else %>
  <p>You're not logged in.</p>
<% end %>

如果差异很大,您可能需要创建两个单独的视图(例如/contacts/index.html.erb/contacts/public_index.html.erb),一个用于登录用户,一个用于未登录用户,然后将逻辑放在您的控制器中:

def index

  ... your logic goes here

  if logged_in
    render 'index'
  else
    render 'public_index'
  end
end

显然,根据登录系统的实现方式,您的实现会有所不同,但这就是要点。

PS 我支持上面的建议,即您使用设计而不是尝试推出自己的登录系统。

于 2013-11-01T04:51:48.600 回答