我有帖子模型和用户模型。帖子属于用户。在用户/显示页面上,我想链接到此网址:
/users/1/posts
在此页面上,我将显示用户创建的所有帖子。
我尝试过像
这样的事情用户/显示
<%= link_to "Posts", posts_path(@user) %>
文章/索引
<% @posts.each do |post| %>
<li>
<%= link_to post.title, post %>
</li>
<% end %>
但这是路由到
/posts.1
并显示属于所有用户的所有帖子。
答案 0 :(得分:1)
正确的帮助者是user_posts_path(@user)
这要求您将邮件资源嵌套在路由中的用户资源下。
在您的帖子控制器中,您需要以下代码:
def index
@user = User.find(params[:user_id])
@posts = @user.posts
end
答案 1 :(得分:1)
您发布的链接的网址助手将如下所示:
user_posts_path(@user) # => /users/123/posts
user_post_path(@user, @post) # => /users/123/posts/1
为了做你想做的事,你必须添加正确的路线:
resources :users do
resources :posts
end
然后,您可以通过运行rake routes
任务来查看所有可用的网址助手。他们可能看起来像这样:
users_path GET /users(.:format) users#index
user_path GET /user/:id(.:format) users#show
...
user_posts_path GET /users/:user_id/posts(.:format) posts#index
user_post_path GET /user/:user_id/posts/:id(.:format) posts#show
...
请注意,在tasks_controller
中,可以通过params[:user_id]
您可能需要查看nested routing
上的导轨指南