2014-06-14 38 views
0

我创建了一个“文章”脚手架,并使用devise设置了用户身份验证。 我想创建一个显示特定用户所有文章的页面!创建一个页面以显示特定用户创建的内容

在我的文章索引列出了所有文章和创建它的用户的名称,我希望其他人能够点击此用户的名称并访问此页面显示此用户创建的其他文章!

非常感谢,我最近开始使用rails,并且尝试了很多方法来完成它,但我无法弄清楚这一点!

回答

2

那么你想要的是属于用户的所有文章。

在你的用户模型中添加;

has_many :articles 

并在文章模型中添加;

belongs_to :user 

创建一个返回该用户所拥有的所有文章这样

@user_articles = User.find(user_id).articles 
0

我想创建一个页面一个页面,显示由特定 用户创建的所有物品!

-

嵌套资源

要做到这一点,你通常会是最好的使用nested resource(如识别父对象),但是当你正在使用devise,我们有current_user助手可用(意思是我们可以自然地使用控制器)

如果您要使用nested resources方法,您可以这样做:

#config/routes.rb 
resources :users do 
    resources :articles #-> domain.com/users/:user_id/articles/ 
end 

这将允许你调用articles#index方法在articles控制器:

#app/controllers/articles_controller.rb 
def index 
    user = User.find params[:user_id] 
    @articles = user.articles 
end 

这,当然,考虑到协会是acacia建议:

#app/models/user.rb 
Class User < ActiveRecord::Base 
    has_many :articles 
end 

#app/models/article.rb 
Class Article < ActiveRecord::Base 
    belongs_to :user 
end 

-

curre nt_user

current_user是设计

创造了一个帮手这意味着你不需要使用嵌套的资源,你手头上已经有在user对象。我会这样做:

#config/routes.rb 
resources :articles #-> domain.com/articles 

#app/controllers/articles_controller.rb 
Class Articles < ApplicationController 
    def index 
     @articles = current_user.articles 
    end 
end 
相关问题