2011-03-24 41 views
0

因此,我不對我的索引操作應用驗證過濾器,但未登錄的用戶仍然無法訪問索引視圖,因爲此行爲::class => "up_arrow #{current_user.votes_for(video).value == 1 ? 'voted' : 'unvoted' }"其中根據用戶是否對該元素進行投票來確定是否應設置樣式。但是,由於current_user未針對註銷的用戶進行定義,因此訪問該頁面會導致錯誤。我不希望發生這種情況。我該如何解決這個問題,以便如果current_user爲零,用戶仍然可以查看頁面,並且該按鈕收到類'unvoted'想要顯示我的索引視圖給未登錄的用戶

回答

0
:class => "up_arrow #{ 
    current_user && current_user.votes_for(video).value == 1 ? 'voted' : 'unvoted' 
}" 
+0

ahh,當然!然後再次..我無法測試,直到我成功地註銷我的應用程序大聲笑:http://stackoverflow.com/questions/5414596/the-action-destroy-could-not-be-found-for -sessionscontroller-but-its-there – 2011-03-24 04:10:12

0
class: "up_arrow #{current_user.try(:votes_for, video).try(:value) == 1 ? 'voted' : 'unvoted'}" 
+0

你能解釋一下'try'方法嗎? – 2011-03-24 04:18:43

+0

這是一個在Object類中定義的rails方法。如果可能的話,它會嘗試應用該方法(第一個參數,表示爲符號)並繼續。在這種情況下,其他參數將作爲參數傳遞。如果該方法不適用,則返回'nil'並且不返回錯誤。特別是,如果你有'nil',它只是返回'nil'。請參閱:http://api.rubyonrails.org/classes/Object.html#method-i-try – sawa 2011-03-24 04:20:56

+0

使用'zero?'忘記後半部分。抱歉。 – sawa 2011-03-24 04:27:27

相關問題