2012-03-02 64 views
0

我有我的項目中每個遊戲的顯示頁面的鏈接,如果 遊戲user_id匹配當前登錄用戶的ID,那麼我想要 它顯示編輯按鈕如果他們不是那麼它不應該顯示。if current_user.id = @ game.user_id

我目前有以下代碼集,但它不起作用。每個遊戲 都有編輯按鈕顯示。代碼如下:

<% if current_user.id = @game.user_id %> 
    <div id="text3"><%= link_to 'Edit', edit_game_path(@game) %></div><br /> 
<% end %> 

任何想法?

回答

2

MrDanA的答案很可能是錯誤的,但您可能希望使此代碼更好。像這樣檢查不是Rails的做法。相反,要像一個用戶實例方法:

def has_game?(game) 
    self.games.exists?(:id => game.id) 
end 

,然後在您的視圖:

<% if current_user.has_game?(@game) %> ... 

(甚至可以通過進一步委託更好的存在進入遊戲模式,作爲一個範圍左右,如果你喜歡)

+0

假設這樣的檢查將經常發生並且使用不同的模型,我會更進一步並考慮使用CanTango(https://github.com/kristianmandrup/cantango/wikin)。因此,權限被捕獲在一個模塊中,並且不會橫切整個模型。 – Zakum 2012-03-02 23:36:24

+0

這是太過分了。你假設他需要授權。 – Spyros 2012-03-02 23:38:58

+0

這是正確的,並有暗示,他會做。因此,如果他最終會發現自己爲三個或更多的模型寫這個許可聲明,他可以看一看關丹。 :) – Zakum 2012-03-03 00:09:19

1

你想==

所以:

<% if current_user.id == @game.user_id %> 
+0

謝謝你,我已經這樣做了,但現在它根本不顯示它,即使是那些屬於當前登錄用戶的遊戲。 – user1222136 2012-03-02 23:28:38

+0

你如何在你的控制器中定義@game? – Spyros 2012-03-02 23:34:20