0

我想让下面的代码更短。我需要做到这一点,以便 /users/1/... 之后的所有内容都可以,并且 /users/1 也可以。我怎样才能做到这一点?谢谢!

<%if request.path == "/users/#{current_user.id}" or request.path == "/users/#{current_user.id}/listeners" or request.path == "/users/#{current_user.id}/listening" or request.path == "/users/#{current_user.id}/discovered" %>

我猜在 CSS 中它类似于 ^=

4

2 回答 2

2

参数比较怎么样?这一切都可能发生在users资源中,因此这部分 url 将被存储在params[:id]其中,我们可以将其与当前用户 ID 进行比较:

<% if params[:id].to_i == current_user.id %>

或者,您可能@user在此控制器中设置了变量:

<% if @user == current_user %>
于 2013-06-18T09:21:05.277 回答
1

您可以使用starts with?来检查字符串的开头是否与“users/1”等匹配,或者您可以使用.include?在任何地方查找字符串。

# starts with:
<%if request.path.starts_with?("/users/#{current_user.id}/") %>
# include:
<%if request.path.include?("/users/#{current_user.id}/") %>

如果您试图找出用户是否在用户控制器操作中,那么您可以检查控制器参数值:

<% if params[:controller] == 'users' %>

如果您想知道查看页面的用户是否与正在查看的用户相同(例如,查看自己帐户页面的用户),您可以将当前用户与您的方法实例化的 @user 对象进行比较:

<% if current_user == @user %>
于 2013-06-18T09:03:25.617 回答