2016-12-08 7 views
0

Я добавил в мою заявку жемчужину 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 это работает.

У кого-нибудь есть идеи, почему это произошло, или чего я не вижу?

ответ

2

На вас смотреть: Кнопка генерирующий URL

<%= link_to fr.name, item_path(fr.id, search_info: params), class:"searched_kennel_title_link default_green_color" %> 

ли вы пытаетесь заменить item_path(fr.id, search_info: params)

к: item_path(fr, search_info: params)

или: item_path(fr.slug, search_info: params)

+0

'fr.slug' сделал трюк. Спасибо! – Ctpelnar1988

+0

На самом деле, развертывание в heroku 'fr.slug' было проблематичным. Просто использование 'fr' было лучшим выбором, в результате чего не было ошибок при производстве. – Ctpelnar1988

0

Попробуйте использовать

def show 
    @searched_item = Item.find(params[:id]) 
end 

У вас уже есть искатели в вашей модели.

+0

Я попробовал ваше предложение, но там было никаких изменений в результате, спасибо. – Ctpelnar1988

+0

Можете ли вы обновить свой ответ с помощью файла вида? –

+1

@ Ctpelnar1988 можете ли вы обновить свой вопрос с помощью файла вида, в котором вы создаете URL-адрес? –