在我的应用程序中,我有一个名为感兴趣的按钮。点击此按钮后,它会将记录添加到interests
表user_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;如果点击两次,它会从表中删除记录(好像他们不再感兴趣了)
答案 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。