2016-12-10 43 views
0

我只是想知道每個人都推薦在他們的.html頁面中使用cancan嗎?在Ruby on Rails的index.html.erb上實現cancancan的最簡潔方法是什麼?

在我目前已成立只是一個小信息... 我/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

所以到我index.html.erb的load_and_authorize_resource方法。

我在我的頁面上有一些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

我喜歡用devise的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> 
相關問題