我有
class Clot < ActiveRecord::Base
has_many :memberships
has_many :users, through: :memberships
end
和用户相同
我按行动按钮
def follow
@clot = Clot.find(params[:id])
@clot.users << current_user
redirect_to @clot
end
它工作正常,但我想创建取消关注按钮
我写了= button_to 'unollow', unfollow_clot_path(@clot), :method => :delete
带
def unfollow
@clot.users.destroy
end
我的路线看起来像
resources :clots do
member do
post :follow
delete :unfollow
end
end
但我收到了错误。如果我做错了,请告诉我答案并告诉我正确的方法。 提前致谢
答案 0 :(得分:1)
当你说这个时,它将调用控制器方法取消关注,并且在params中将传递clot id
。所以你必须找到那个id为
= button_to 'unollow', unfollow_clot_path(@clot), :method => :delete
def method_name
@clot = Clot.find(params[:id])
end
但是当你做的时候
@clot.users
它将返回该clot实例的用户数组。而且您无法在destroy
对象上调用array
方法。所以first
将返回第一个找到的对象,所以你可以像
@clot.users.first.destory!
或者您也可以使用destory_all
方法。销毁所有物品