在特定页面中显示用户的帖子 - rails

时间:2016-04-04 07:00:35

标签: ruby-on-rails ruby ruby-on-rails-4

我正在编写一个rails应用程序,我想在/users/20/posts这样的单独页面中显示用户的帖子。 我将这两个代码添加到routs.rb:

resources  :users do
 resources :posts, only: [:index]
end

get 'users/:id/posts' => 'users#posts', :as => :user_posts

但是像/users/20/posts这样的网址会显示所有帖子,而不仅仅是这个特定用户的帖子。 (它的行为与/posts

相同

我的模型和控制器中有这些(如果需要):

user.rb:

has_many :posts, dependent: :destroy

post.rb:

belongs_to :user

users_controller.rb:

def posts
 @user = User.find(params[:id])
 @posts = @user.posts
end

3 个答案:

答案 0 :(得分:2)

仅使用浏览器URL进行测试。它应该工作。

routes.rb

resources  :users do
 resources :posts, only: [:index]
end

get 'users/:id/user_posts' => 'users#user_posts', :as => :custom_user_posts

users_controller.rb

def user_posts
 @user = User.find(params[:user_id])
 @posts = @user.posts

 #render plain: {posts: @posts.inspect, user: @user.inspect} 
end

现在在view / users / user_posts.html.erb

中添加新文件

在页面中:

<% @posts.each do |p|%>
   loop right here your data
<% end %>

答案 1 :(得分:0)

按照您的方式进行,您需要将路线更改为

resources  :users do
 get :posts
end

答案 2 :(得分:0)

index操作中,添加此

def index
  user = User.find_by_id(params[:user_id])
  @posts = user.posts 
end

然后在您的观看中显示@posts

相关问题