перезаписывает URL с использованием - PullRequest
0 голосов
/ 31 марта 2020

Как переписать ниже URL

127.0.0.1:3000/article/index?type=1

как

127.0.0.1:3000/article/category/brand

, где тип 1 - это категория с именем бренда.

возможно ли использовать рельсы?

route.rb

get "article/index"

article_controller.rb

def index
  @article =  Article.find(params[:type])
end

article.rb // model

class Article < ApplicationRecord
  belongs_to :category
end

ссылка на этот маршрут

<%= link_to category.name, {:controller => "article", :action => "index", :type => category.id }%>

1 Ответ

0 голосов
/ 31 марта 2020

Rails не предоставляет то, что вы пытаетесь достичь из коробки. Здесь я даю вам несколько советов, чтобы получить, куда вы хотели go.

  1. 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 Предположение здесь будет несколько статей для данной категории.

...