簡體   English   中英

將評估移至Rails3中的幫助器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM