1

投稿モデルとユーザーモデルがあります。投稿はユーザーのものです。ユーザー/ショーページで、このURLにリンクしたいと思います。

/users/1/posts

このページでは、ユーザーが作成したすべての投稿を表示します。

私は次のようなことを試しました

ユーザー/ショー

<%= link_to "Posts", posts_path(@user) %>

投稿/インデックス

<% @posts.each do |post| %>
  <li>
    <%= link_to post.title, post %>
  </li>
<% end %>

しかし、これはにルーティングされています

/posts.1

すべてのユーザーに属するすべての投稿を表示します。

4

2 に答える 2

1

正しいヘルパーは次のとおりですuser_posts_path(@user)。これには、ルートのユーザーリソースの下に投稿リソースがネストされている必要があります。

投稿コントローラーでは、次のコードが必要です。

def index
  @user = User.find(params[:user_id])
  @posts = @user.posts
end
于 2013-02-15T02:44:24.360 に答える
1

投稿したリンクのURLヘルパーは次のようになります。

user_posts_path(@user) # => /users/123/posts
user_post_path(@user, @post) # => /users/123/posts/1

あなたが望むことをするために、あなたは正しいルートを追加しなければならないでしょう:

resources :users do
  resources :posts
end

rake routes次に、タスクを実行することにより、使用可能なすべてのURLヘルパーを表示できます。彼らはこのように見えるかもしれません:

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で、ユーザーIDは次のURLからアクセスできることに注意してください。params[:user_id]

ネストされたルーティングに関するレールガイドを確認することをお勧めします

于 2013-02-15T02:48:19.577 に答える