2014-09-23 2 views
1

Так у меня есть 2 различных ссылки:Как мне сделать friendly_id URL-адрес для города и государства, как объединившиеся государства/техасским/Остин

united-states/texas/austin 

и:

united-states/colorado/austin-14be76ea-77e2-4f0e-8540-0103ad72cd7a 

Я хочу вторую к быть просто:

united-states/colorado/austin 

Так как же я получаю friendly_id перестать создавать уникальные слизни, и вместо того, чтобы город пробкового уникален, когда область действия по количеству ry и состояние?

Также, когда в моем контроллере, как я могу найти правильный город, область по стране и штату?

@city = City.friendly.find(params[:id]) 

Это просто взгляд на слизню и не заботится о том, чтобы город был вложенным ресурсом.

Вот мои настройки:

class City < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :name, :use => :scoped, :scope => [:homeland, :region] 
    belongs_to :region 
    belongs_to :homeland 
end 

class Region < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :name, :use => :scoped, :scope => :homeland 
    belongs_to :homeland 
    has_many :cities 
end 

#Had to use Homeland as Country was in use 
class Homeland < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :name, use: :slugged 
    has_many :regions 
    has_many :cities, through: :regions 
end 

routes.rb

resources :homelands, :path => '' do 
    resources :regions, :path => '' do 
     resources :cities, :path => '' 
    end 
    end 

Update: Здесь вы идете Михал

enter image description here

Update 2: My фикс для сейчас

Снимите:

resources :homelands, :path => '' do 
    resources :regions, :path => '' do 
     resources :cities, :path => '' 
    end 
    end 

Добавить:

get "local/:id", to: "homelands#show", as: 'homeland' 
    get "local/:homeland_id/:id", to: "regions#show", as: 'region' 
    get "local/:homeland_id/:region_id/:id", to: "cities#show", as: 'city' 

Для ссылки:

<%= link_to region.name, region_path(region.slug, homeland_id: @homeland.slug) %> 
+0

Какую версию FriendlyId вы используете точно? И какая версия Rails? –

+0

friendly_id (5.0.4), рельсы (4.1.4) – Abram

ответ

0

Существует ошибка в FriendlyId, который вызывает это. См. https://github.com/norman/friendly_id/issues/536

Если вы нажмете мой ** немного, возможно, я заставлю себя получить запрос патча, наконец.

+2

See my edit Michal – Abram

+1

Я собирался вернуть редактирование, пока не увидел этот ответ. Отлично сработано. – pjmorse

Смежные вопросы