2015-06-23 62 views
0

我正在努力讓用戶收藏文章。允許用戶收藏文章

我創建了一個名爲favorite的模型。

belongs_to :user 
belongs_to :post 

它存儲user_id和post_id。

我還創建了一個FavoritesController

class FavoritesController < ApplicationController 

    def create 
    @post = Post.find(params[:post_id]) 
    current_user.favorite(@post) 
    end 

    def destroy 
    @post = Post.find(params[:id]) 
    current_user.unfavorite(@post) 
    end 

end 

我有我的帖子#指數的形式是:

<%= form_for current_user.favorites.build do |favorite| %> 
    <%= hidden_field_tag :post_id, f.id %> 
    <%= favorite.button do %> 
    <i class="fa fa-star-o"></i> 
    <% end %> 
<% end %> 

我的用戶模型是這樣的:

# Favorites a post. 
def favorite(post) 
    favorite.create(post_id: post) 
end 

# Unfavorites a post. 
def unfavorite(post) 
    favorite.find_by(post_id: post).destroy 
end 

當我嘗試點擊收藏夾時,我會收到:

wrong number of arguments (0 for 1) 

Parameters: 

{"utf8"=>"✓", 
    "authenticity_token"=>"HjiANQUqTQVEqy0yzfLFMlnC8RsTiY5kVlvIUnD5OSIaSYSi4ELSuC95vRMIBA/6W+KvzCWMMXQ==", 
"post_id"=>"7", 

我在這裏做錯了什麼?還有更好的方法來做到這一點?

+0

錯誤是什麼?一個問題是,在你最喜歡的方法中,你傳遞一個帖子,然後用post_id調用create。 –

+0

@PhilipHallstrom所以我試圖改變最喜歡的方法從最喜歡的收藏夾,現在它重新加載但沒有任何反應。它說線:43這是我最喜歡的(後) – user2755537

+0

你不能使用'收藏夾',因爲它已被定義爲「使用有很多收藏夾」的一部分。 –

回答