Ruby on Rails - Add&单击两次时从表中删除记录

时间:2017-09-08 18:25:57

标签: ruby-on-rails ruby ruby-on-rails-4 controller

在我的应用程序中,我有一个名为感兴趣的按钮。点击此按钮后,它会将记录添加到interestsuser_id& post_id

这是我的PostsController

class PostsController < ApplicationController
  def interested
    @interest = Interest.new
    @interest.user_id = params[:user_id]
    @interest.post_id = params[:post_id]
    @interest.save
  end

我的routes.rb

get 'i/:user_id/:post_id', to: 'posts#interested', as: :interested

我的节目视图:

= link_to "Interested", interested_path(post.id, current_user), remote: true

如何在点击它时将其添加到我的表格&amp;如果点击两次,它会从表中删除记录(好像他们不再感兴趣了)

2 个答案:

答案 0 :(得分:1)

根据我的理解,用户第一次点击&#34;感兴趣&#34;在您想要保存的帖子上,作为用户感兴趣的帖子。但是,当用户点击&#34;感兴趣的&#34;再次在他已经标记为感兴趣的帖子上,然后你想要删除记录。

这是实现这一目标的一种方法:

def interested
 @interested = Interest.find_by(user_id: params[:user_id], post_id: params[:post_id]
 if @interested
  @interested.destroy
 else
   Interest.create(user_id: params[:user_id], post_id: params[:post_id])
 end
end

您还需要某种Flash消息来表明兴趣已成功创建/销毁

答案 1 :(得分:0)

你可以有2个link_to按钮,一个用于&#34;感兴趣的&#34;一个隐藏的&#34;不感兴趣&#34;。 2个按钮可以在控制器中执行自己的操作:interest-action和not_interested-action。然后,在处理数据库部分事务时,您会得到很好的分离。当然,使用show / hide方法在单击事件处理程序中使用javascript / jquery切换2个按钮。

在服务器上的interest-action中,您应该使用find_or_create_by方法来获取记录。然后在记录上应该是一个字段&#34; active&#34;设置为true,确定用户是否感兴趣。在not_interested-action中,此字段仅设置为false。