0

我有很多通过关联。

公司通过关注有很多用户。我希望用户能够关注公司。- 我正在为用户使用设计。

我对关注公司和取消关注公司都有自定义操作。关注操作有效,但我在取消关注时遇到问题。

 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

如果您有任何想法,我将不胜感激!

非常感谢

4

1 回答 1

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

于 2012-04-07T22:09:33.883 回答