0

我认为这是:

<% if user_signed_in? && current_user.has_role? :admin or :editor %>

这将返回此错误:

syntax error, unexpected tSYMBEG, expecting keyword_then or ';' or '\n'

我也试过这个:

<% if user_signed_in? and current_user.has_role? :admin or :editor %>

虽然我没有收到上述错误,但它根本不起作用......即 non-signed-in-user可以访问该if块中的内容。

4

3 回答 3

1

我认为has_role?不能接受多个参数。正确的做法是:

<% if user_signed_in? && (current_user.has_role? :admin or current_user.has_role? :editor) %>
于 2014-11-03T14:13:19.013 回答
1

我发现了更惯用的写法,即使用[has_any_role?][1]

    <% if user_signed_in? and current_user.has_any_role? :admin, :editor %>
于 2014-11-03T14:37:51.950 回答
0

你可以试试这样:

<% if user_signed_in? && [:admin, :editor].include?(current_user.role) %>
于 2014-11-03T14:20:49.400 回答