Основные вложенные ресурсы

Я вкладываю ресурсы вот так:

resources :users do
  resources :tags
end

И на моей странице индекса тегов я хочу сделать ссылку на страницу одного тега, поэтому я делаю так:

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

В моем контроллере я передаю зарегистрированный идентификатор пользователя:

@user = current_user

К сожалению, я получаю следующую ошибку:

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

Что я здесь не так делаю?

1 ответ

Решение

Tag ресурс зависит от конкретного User ресурс. Это значит для Tag"s :show маршрут user_tagэто выглядит так

user_tag GET  /users/:user_id/tags/:id(.:format)  tags#show

Вам нужно указать как User и Tag на этом маршруте, как

user_tag_path(@user, @some_tag_here)

Тем не менее, вы говорите,

Я хочу дать ссылку на страницу с одним тегом

который плохо сформулирован. Я предполагаю, что под этим вы подразумеваете ссылку на :index маршрут для Tagспецифично для некоторых User resourece. Не существует "страницы с одним тегом", определенной как /tags,

:index маршрут выглядит так

  user_tags GET  /users/:user_id/tags(.:format)  tags#index

и используется как

user_tags_path(@user)
Другие вопросы по тегам