我希望能够展示仅属于当前用户的帖子 以下是我目前的做法。
控制器
def index
@user = User.find(params[:id])
@posts = @user.posts;
end
查看
<li><%= link_to "Posts", posts_path %></li>
路线
match '/posts', to: 'posts#index', via: 'get'
即使我在此用户ID下有帖子记录,我也会收到以下错误
ActiveRecord::RecordNotFound in PostsController#index
Couldn't find User without an ID
我在这里缺少什么?
答案 0 :(得分:1)
您需要为此设置嵌套资源。
在你的routes.rb
中resources :users do
resources :posts
end
然后在您的视图中,您可以将用户传递到路径,如下所示:
<li><%= link_to "Posts", user_posts_path(@user) %></li>
如果使用posts_controller.rb
正确调用路径,则@user_id
索引操作已设置@user
。
此处有更多信息:http://guides.rubyonrails.org/routing.html#nested-resources