Rails не предоставляет то, что вы пытаетесь достичь из коробки. Здесь я даю вам несколько советов, чтобы получить, куда вы хотели go.
- rout.rb
get "articles/category/:id" => "articles#index", as: "articles_by_category"
Как таковой, ничего плохого в вашей конфигурации, но не хорошая практика. Подробнее об этом здесь
models / article.rb - оставить как есть
Использовать https://github.com/norman/friendly_id Gem. Следуйте инструкциям по использованию https://github.com/norman/friendly_id#usage для установки и настройки.
models / category.rb
class Category < ApplicationRecord
extend FriendlyId
friendly_id :name, use: :slugged
has_many :articles
end
<%= link_to category.name, articles_by_category_path(category.id) %>
article_controller.rb
def index
@articles = Category.friendly.find(params[:id]).articles
end
PS Предположение здесь будет несколько статей для данной категории.