当有很多角色时,Rails可以扫描如何在视图中限制用户权限?每个角色都有多个特权。 例如,在我的rails应用程序中,大约有50个视图文件,例如article.html.erb,product.html.erb,comment.html.erb,order.html.erb,...等等。我要做的是在每个.html.erb文件中添加权限:
<% if can? :update, @article %>
<%= link_to "Edit", edit_article_path(@article) %>
<% end %>
...
<% if can? :update, @product %>
<%= link_to "Edit", edit_product_path(@product) %>
<% end %>
因此,如果以这种方式,我必须做很多繁琐的工作。当请求发生变化时,我必须修改多个.html.erb文件。
所以我的问题是,如果有任何方法我可以接受以避免这种方式?比如使用全局标签来控制所有要显示的视图还是不显示“编辑”,“销毁”方法?
答案 0 :(得分:0)
您可以使用layouts in rails
创建一个部分视图,在_user_privileges.html.erb
中的layouts
文件夹中说app/views
,然后在那里编写与权限相关的代码。现在,在其他每个视图文件中,您都可以使用<%= render 'layouts/user_privileges' %>
。所以现在您可以使用单个文件来更改权限。
<强> _user_privileges.html.erb 强>
<% if can? :update, @article %>
<%= link_to "Edit", edit_article_path(@article) %>
<% end %>
...
<% if can? :update, @product %>
<%= link_to "Edit", edit_product_path(@product) %>
<% end %>
article.html.erb,product.html.erb,comment.html.erb,order.html.erb等。
...
<%= render 'layouts/user_privileges' %>
...