基本嵌套资源

时间:2013-06-08 00:29:37

标签: ruby-on-rails-3 routes

我正在嵌套资源:

resources :users do
  resources :tags
end

在我的代码索引页面中,我想链接到单个标记页面,所以我这样做:

<%= link_to 'Show', user_tag_path(@user.id) %>

在我的控制器中,我正在传递当前登录的用户ID:

@user = current_user

不幸的是,我收到以下错误:

No route matches {:action=>"show", :controller=>"tags", :user_id=>1}

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

Tag资源依赖于特定的User资源。这意味着对于Tag的{​​{1}}路由:show,它看起来像这样

user_tag

您需要在此路线上同时指定user_tag GET /users/:user_id/tags/:id(.:format) tags#show User,例如

Tag

但是,你说

  

我想链接到单个标签页

这是措辞不好。我认为,您的意思是指想要链接到user_tag_path(@user, @some_tag_here) 的{​​{1}}路由,特定于某些:index资源。没有像Tag那样定义“单一标签页”。

User路线看起来像

/tags

并像

一样使用
:index