誰もが.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を使用していますが、私は記事のモデルを設定。
私は、だから私のindex.html.erbに私のarticles_controller.rb
でload_and_authorize_resourceメソッドを使用しています。
私は自分のページにいくつかのCRUDオプションを持っています。私は、編集や削除などのいくつかのリンクとオプションを管理ユーザに見せたいだけです。
私のindex.html.erbの1つの部分では、私はこのリンクを管理者だけが見ることができます。
<% 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を使用してこれを簡略化する方法は ですか?そうすれば、私のセクションをたくさん繰り返す必要はありません。