2012-04-07 43 views
0

我有一個有很多通過關聯。路由自定義,刪除動作與多個通過關聯

公司通過Follows有許多用戶。我希望用戶能夠關注公司。 - 我正在爲用戶使用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 

我耙路線命令顯示f以下

follow_firm POST /firms/:id/follow(.:format) firms#follow 
    unfollow_firm DELETE /firms/:id/unfollow(.:format) firms#unfollow 

如果您有任何意見,我將不勝感激!

非常感謝

回答

0

錯誤undefined method 'follows' for nil:NilClass來自:

current_user.follows.find_by_firm_id(@firm.id).destroy

你需要測試一個用戶登錄,使current_usernil

也許?:

current_user.follows.find_by_firm_id(@firm.id).destroy if current_user

+0

我明白了,謝謝!我已經給出了一個嘗試,現在似乎正在尋找行動,但現在似乎終止會議而不刪除以下內容。這導致再次請求登錄。 – RMcNairn 2012-04-07 22:14:27

+0

好像你沒有會話,否則current_user不會是零 – DanS 2012-04-07 22:18:15

+0

好吧,這很有幫助,意味着我知道從哪裏開始看現在!感謝丹的幫助。 – RMcNairn 2012-04-07 22:20:53

相關問題