如何根据Rails 4中的用户隐藏html区域?

时间:2013-09-07 19:05:28

标签: html ruby-on-rails ruby devise

我的产品页面显示视图上有一个结帐按钮,可以接受此优惠。每个优惠属于一个用户。我不希望创建商品的用户能够自己接受它,所以如果它是页面上的当前用户我想要隐藏按钮。我无法弄清楚为什么这段代码不起作用:

<% 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是我认为的一种设计宝石方法。

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:1)

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

Offer.last.sender_id

并检查它是否与您的current_user id

相对应

答案 1 :(得分: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