我有以下评估效果很好:
在我的listing / detail.html.erb视图中
<% if user_signed_in? && current_user.id == @listing.user_id %>
我在我的视图中多次使用它,所以我想把它作为辅助方法。
我可以在listing_helper文件中放置哪些代码,以便在我的视图中调用类似的内容:
<% if isListingOwner? %>
任何帮助将不胜感激。感谢。
答案 0 :(得分:3)
当我需要做类似的事情时,我会使用Cancan。然后你可以写下这样的东西:
<% if can?(:update, @listing) %>
Listing
<% end %>
在我看来更干净。
答案 1 :(得分:1)
将其放入/app/helpers
文件夹。
Railscast有关于此主题的介绍教程 http://railscasts.com/episodes/64-custom-helper-modules
答案 2 :(得分:1)
所有好建议,但您需要添加到listing_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) %>
如果您正在做很多此类事情,您可能需要查看基于角色的授权插件。
答案 3 :(得分:0)
如果您的belongs_to :user
模型中有Listing
,为什么不这么做?
if current_user == @listing.user
我假设您正在使用Devise或在用户未登录时从current_user返回nil的内容。