我有很多通过协会。
公司有很多用户跟随。我希望用户能够关注公司。 - 我正在为用户使用Devise。
我有一个自定义行动,既可以关注公司,也可以取消公司的后续行动。以下操作正在进行,但我在取消关注时遇到了问题。
def follow
@firm = Firm.find(params[:id])
@firm.users << current_user
respond_to do |format|
format.html { redirect_to @firm }
end
end
def unfollow
@firm = Firm.find(params[:id])
current_user.follows.find_by_firm_id(@firm.id).destroy
respond_to do |format|
format.html { redirect_to firms_url }
end
端 在我的routes.rb
resources :firms do
member do
post 'follow'
delete 'unfollow'
end
end
并在我的公司视图中
<%= link_to 'unfollow', unfollow_firm_path(firm), :method => 'delete' %>
我收到以下错误
NoMethodError in FirmsController#unfollow
undefined method `follows' for nil:NilClass
我的rake routes命令显示以下内容
follow_firm POST /firms/:id/follow(.:format) firms#follow
unfollow_firm DELETE /firms/:id/unfollow(.:format) firms#unfollow
如果您有任何想法,我将非常感激!
非常感谢
答案 0 :(得分:0)
错误undefined method 'follows' for nil:NilClass
来自:
current_user.follows.find_by_firm_id(@firm.id).destroy
您需要测试用户是否已登录,以便current_user
不是nil
。
也许:
current_user.follows.find_by_firm_id(@firm.id).destroy if current_user