我的产品页面显示视图上有一个结帐按钮,可以接受此优惠。每个优惠属于一个用户。我不希望创建商品的用户能够自己接受它,所以如果它是页面上的当前用户我想要隐藏按钮。我无法弄清楚为什么这段代码不起作用:
<% unless current_user.id == @offer.sender_id %> #sender_id is a foreign key in the offer model that makes each offer belong_to a user.
<div id="accept_offer">
<%= button_to 'Accept Offer', etc %>
</div>
<% end %>
current_user是我认为的一种设计宝石方法。
任何帮助表示感谢。
答案 0 :(得分:1)
您的代码似乎是正确的,您可能需要查看模型中的Offer.sender_id属性,看它是否包含正确的用户ID(商品的创建者)。你可以通过你的应用程序(在浏览器中)创建一个新的商品,然后在你输入的控制台中检查:
Offer.last.sender_id
并检查它是否与您的current_user id
相对应答案 1 :(得分:0)
刚看到错误并得到了原因。
您尝试了未登录的页面,因此unless current_user
有效,这意味着您尚未登录。原始代码不会考虑这种情况。
一般情况下,您应该看到错误,因为未定义current_user但您可能已将其禁用。
两种解决方法:
更改current_user,无论如何分配对象
class ApplicationController
def current_user
super || User.new
end
end
更改逻辑
<% if current_user && current_user != @obj.sender %>
# Button code
# Only signed in user with different id can see it