我创建了一篇"文章"脚手架和我已经设置了用户的身份验证。 我想创建一个页面,显示特定用户授予的所有文章!
在我的文章索引中列出了所有文章以及创建它的用户的名称,我希望其他人能够点击该用户的名称并访问此页面以显示该用户创建的其他文章! / p>
非常感谢,我最近开始使用rails,我尝试了很多方法,但我无法解决这个问题!
答案 0 :(得分:2)
你想要的是所有属于用户的文章。
在您的用户模型中添加;
has_many :articles
并在文章模型中添加;
belongs_to :user
创建一个页面,返回用户拥有的所有文章,如此
@user_articles = User.find(user_id).articles
答案 1 :(得分: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
-
<强> CURRENT_USER 强>
current_user
是由Devise创建的助手
这意味着您不需要使用嵌套资源,因为您已拥有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