[英]Moving an evaluation to a helper in Rails3
我的以下评估非常有效:
在我的listings / detail.html.erb视图中
<% if user_signed_in? && current_user.id == @listing.user_id %>
我在视图中多次使用了此方法,因此我想将此方法用作辅助方法。
我可以在listings_helper文件中放置什么代码,以便可以在视图中调用类似的代码:
<% if isListingOwner? %>
任何帮助,将不胜感激。 谢谢。
当我需要执行类似操作时,可以使用Cancan。 然后,您可以编写如下内容:
<% if can?(:update, @listing) %>
Listing
<% end %>
我认为清洁得多。
将其放在/app/helpers
文件夹中。
Railscast对此主题进行了介绍性教程http://railscasts.com/episodes/64-custom-helper-modules
所有好的建议,但是您需要添加到listings_helper.rb的代码是
def isListingOwner?
user_signed_in? && current_user.id == @listing.user_id
end
就个人而言,我宁愿将该检查放入模型中:
class Listing
def owned_by?(user)
user.id == self.user_id
end
end
然后在您看来,您将编写:
<% if @listing.owned_by(current_user) %>
如果您正在做很多此类事情,则可能需要研究基于角色的授权插件。
如果您的Listing
模型中有一个belongs_to :user
,为什么不简单地做
if current_user == @listing.user
我假设您正在使用Devise或在用户未登录时从current_user返回nil的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.