0

我的产品页面显示视图上有一个结帐按钮,它接受报价。每个优惠都属于一个用户。我不希望创建优惠的用户能够自己接受它,所以如果它是页面上的当前用户,我想隐藏该按钮。我不知道为什么这段代码不起作用:

<% 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 是我相信的一种设计 gem 方法。

任何帮助表示赞赏。

4

2 回答 2

1

您的代码似乎正确,您可能需要查看模型中的 Offer.sender_id 属性,以查看它是否包含正确的用户 ID(优惠的创建者)。您可以通过您的应用程序(在浏览器中)创建新报价来检查这一点,然后在控制台中键入:

Offer.last.sender_id

并检查它是否对应于您的 current_user id

于 2013-09-07T19:16:11.033 回答
0

刚刚看到错误并得到了原因。

您在未登录的情况下尝试了该页面,因此unless current_user可以正常工作,这意味着您尚未登录。您的原始代码未考虑这种情况。

通常你应该看到一个错误,因为 current_user 没有定义,但你可能已经禁用了它。

两种修复方法:

  1. 更改current_user,无论如何分配一个对象

    class ApplicationController
      def current_user
        super || User.new
      end
    end
    
  2. 改变逻辑

    <% if current_user && current_user != @obj.sender %> 
      # Button code
      # Only signed in user with different id can see it
    
于 2013-09-07T19:35:53.553 回答