Я добавил в мою заявку жемчужину friendly_id
. Атрибут name не заменяет индекс в URL.Friendly_id имя не отображается в URL-адресе
Gem
gem 'friendly_id', '~> 5.1.0'
миграции
rails g migration add_slug_to_items slug:string
Миграция файла
class AddSlugToItems < ActiveRecord::Migration
def change
add_column :items, :slug, :string
add_index :items, :slug
end
end
Контроллер
def show
@searched_item = Item.friendly.find(params[:id])
end
View-Path
/views/items/show.html.erb
Маршруты
resources :items, only: [:new, :create, :update, :show]
производящая Кнопка URL
<%= link_to fr.name, item_path(fr.id, search_info: params), class:"searched_kennel_title_link default_green_color" %>
Модель
extend FriendlyId
friendly_id :name, use: [:slugged, :finders]
def should_generate_new_friendly_id?
name_changed?
end
Это уже существующие приложения, так что я тоже побежал:
Item.find_each(&:save)
Странная часть что при генерации URL она изначально: http://localhost:3000/items/1
Когда я вручную изменяю URL-адрес: http://localhost:3000/items/item-name
это работает.
У кого-нибудь есть идеи, почему это произошло, или чего я не вижу?
'fr.slug' сделал трюк. Спасибо! – Ctpelnar1988
На самом деле, развертывание в heroku 'fr.slug' было проблематичным. Просто использование 'fr' было лучшим выбором, в результате чего не было ошибок при производстве. – Ctpelnar1988