目前,我的“展示”视图中有一个问题模型
<% if current_user.id == @question.user_id %>
<%= link_to 'Edit', edit_question_path(@question) %>
<% else %>
<% end %>
允许创建问题的用户对其进行编辑。这在用户登录时工作正常。
但是,如果访客未登录。我收到此错误:
NoMethodError in Questions#show
undefined method `id' for nil:NilClass
似乎不喜欢这一行
<% if current_user.id == @question.user_id %>
任何人都可以建议重写以使其与访客用户一起使用吗?
由于
答案 0 :(得分:4)
为什么不做<% if current_user == @question.user %>
之类的事情?取出ID。
或者,如果你真的想要ID。像<% if current_user.present? && current_user.id == @question.user_id %>
答案 1 :(得分:1)
帮助
def current_user?(user)
current_user && current_user == user
end
然后在视图中
<% if current_user?(@question.user) %>
答案 2 :(得分:0)
使用此
<% if current_user.present? && current_user.id == @question.user_id %>
答案 3 :(得分:0)
如果用户不在数据库中,则不能拥有user.id
。有一个很好的截屏视频:http://railscasts.com/episodes/393-guest-user-record?view=asciicast
答案 4 :(得分:0)
@BillyChan - 对于该要求,如果有人未登录,我将允许upvoting。无需创建未保存的用户记录。我可能想用cookie来阻止人们进行多方投票,但说实话,我可能会与客户争辩说,我们不应该让人们在没有登录的情况下进行投票。