我只是想知道每个人都建议在他们的.html页面中使用cancan吗?
关于我目前设置的一些信息...... 我的/app/models/ability.rb:
user ||= User.new # guest user (not logged in)
if user.admin?
can :manage, :all
else
can :read, :all
end
我正在使用articles_controller.rb并设置了文章模型。
我在articles_controller.rb中使用了load_and_authorize_resource方法
所以我的index.html.erb。
我的页面上有一些CRUD选项,我只希望管理员用户可以看到一些链接和选项,例如编辑和删除。
在我的index.html.erb的一部分中,我有这个链接,只能由管理员查看。
<% if can? :create, @article %>
<%= link_to 'Post New Load Data!', new_article_path %>
<% end %>
^这对我想要的完美。
但是我的index.html上有另一个区域让我感到困惑。它是这样的......
<% if current_user && current_user.admin? %>
<table>
<tr>
<th>Title</th>
</tr>
<% @articles.each do |article| %>
<tr>
<td><%= article.title %></td>
<td><%= link_to 'View', article_path(article) %> |</td>
<td><%= link_to 'Edit', edit_article_path(article) %> |</td>
<td><%= link_to 'Delete', article_path(article),
method: :delete,
data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
<p>
</table>
<% else %>
<table>
<tr>
<th>Title</th>
</tr>
<% @articles.each do |article| %>
<tr>
<td><%= article.title %></td>
<td><%= link_to 'View', article_path(article) %> |</td>
</tr>
<% end %>
</table>
<% end %>
因此,它允许管理员查看“编辑”和“删除”选项。 这就是我想要的,但我没有使用CanCan来做到这一点。有没有 使用CanCan简化此操作的方法?这样我就不必重复了很多 我的部分。
答案 0 :(得分:0)
我喜欢坚持使用设计的current_user.admin?因为它读得很好:
<table>
<tr>
<th>Title</th>
</tr>
<% @articles.each do |article| %>
<tr>
<td><%= article.title %></td>
<td><%= link_to 'View', article_path(article) %> |</td>
<% if current_user.admin? %>
<td><%= link_to 'Edit', edit_article_path(article) %> |</td>
<td><%= link_to 'Delete', article_path(article),
method: :delete,
data: { confirm: 'Are you sure?' } %></td>
<% end %>
</tr>
<% end %>
</table>