0

私は協会を通じて多くを持っています。

企業には、フォローを通じて多くのユーザーがいます。ユーザーが会社をフォローできるようにしたいと思います。-ユーザーに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

私のrakeroutesコマンドは次のように表示されます

  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 に答える