我正在编写一个 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
这样的 url 会显示所有帖子,而不仅仅是该特定用户的帖子。 (其行为与 /posts
相同)
我的模型和 Controller 中有这些(如果需要):
用户.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
最佳答案
仅使用浏览器 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 %>
关于ruby-on-rails - 在特定页面中显示用户的帖子 - Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36396340/