如何在用户选择操作时隐藏链接

时间:2013-11-19 21:33:54

标签: ruby-on-rails

我有一个眨眼系统,当点击“我感兴趣”时,它会向用户发送一条消息。我如何设置,以便用户点击“我感兴趣”的状态,它将自动向该用户发送消息。我想添加一种方法,以便在单击该状态时“我感兴趣”链接时,该用户将无法使用该链接。这是为了防止用户从相同的状态消息发送30条消息,这将导致垃圾邮件。文本可以保留在那里,但如果用户已经从状态使用该操作,则应从文本中删除该链接。

吸引控制者:

def interested
  @intrigue = User.find(params[:id])
  @intrigue = current_user
  @recipient = Intrigue.find(params[:id])

  @message = Message.create(:subject => "Someone is Interested in you",
                         :sender_id => @intrigue.id,
                         :recipient_id => @recipient.user_id,
                         :body => "I saw your date and I'm interested")
    render :new, alert: 'Your message was sent.'
end

查看:

<% if current_user?(intrigue.user) %>
                <%= link_to "delete", intrigue, method: :delete, data: { confirm: "You sure?" }%> <% end %> <% unless current_user?(intrigue.user) %> | <%= link_to "repost", repost_intrigue_path(intrigue), method: :post %> | <%= link_to "Interested", interested_intrigue_path(intrigue), method: :message %>

                        <% end %>

1 个答案:

答案 0 :(得分:0)

如果Message作为current_usersender作为用户所在的页面,则需要一些方法来查找recipient。像这样:

<% if current_user.has_sent_message?(@user) %>
  Text only
<% else %>
  <%= link_to ... %>
<% end %>

has_sent_message?将是User上的实例方法,例如:

def has_sent_message?(user)
  Message.find_by_recipient_id_and_sender_id(user.id, self.id).present?
end