У меня есть следующие модели:Как создать вложенные маршруты с родительским по умолчанию в рельсах?
class Article < ActiveRecord::Base
belongs_to :category
end
class Category < ActiveRecord::Base
end
Статьи вложенными по категориям, как это:
resources :categories, only: [] do
resources :articles, only: [:show]
end
, который дает мне следующий маршрут
GET /categories/:category_id/articles/:id articles#show
Чтобы использовать это в моих взглядах сделать мне нужно написать
link_to category_article_path(article.category, article)
# => "/categories/1/articles/1
Их нет ни одного article_path
, все статьи всегда будут вложены в соответствующую категорию. Однако мне было интересно, если их это способ для меня СУХОГО это так я мог бы просто написать
link_to article_path(article)
# => "/categories/1/articles/1
и до сих пор маршрут вложенным под категорией.
Я знаю, что могу просто написать помощника или что-то похожее, но мне хотелось бы получить более общее решение, потому что я знаю, что в какой-то момент я получу больше вложенных ресурсов по категориям (например, блоги, видео и т. Д.), что все имеет отношение к категориям.
Поэтому в основном я искал что-то вроде этого
# Example, doesn't work (article_id is not available here):
resources :categories, only: [] do
resources :articles, only: [:show], defaults: { category_id: Article.find(article_id).category.id }
end
Однако, что не работает, так как article_id
не доступен по умолчанию в блок. Насколько я знаю, вы можете создавать только статические значения по умолчанию, и мне нужна динамическая, основанная на текущей статье.
Я не понимаю, что вы имеете в виду? Не могли бы вы объяснить немного больше? Если я напишу эту строку, это ничего не изменит ... – jokklan
Пожалуйста, проверьте изменение –
. Ох хорошо, но проблема в том, что 'defaults: {category_id: Article.find (article_id) .category.id}' doesn Не работает, поскольку article_id недоступен, вы не можете создавать динамические значения по умолчанию. – jokklan