2013-08-22 2 views
0

У меня есть URL-адреса, как этотРельсы маршруты удалить символы из URL

аризоны/AZ12
колорадо/CO470

Я добавил AZ и СО, поскольку дружественный идентификатор хотел уникальные идентификаторы. Аризона и Колорадо может иметь блок 12.

Я хотел бы иметь URL, как

аризоны/unit12
колорадо/unit470

Похоже, вы могли бы написать что-то, что удаляет первые два символа и заменяет их. Будет ли это на маршрутах или контроллере?

Мои маршруты

resources :states, :except => [:index ], :path => '/' do 
    resources :units, :except => [:index ], :path => '/' 
    end 

Мой контроллер

def show 
    @units = Unit.all 
    @states = State.with_units.group('states.id') 
     @state = State.all 
     @unit = Unit.friendly.find(params[:id]) 
    end 

ответ

0

Реализовать метод to_param на вашей модели. Rails вызовет to_param для преобразования объекта в пул для URL. Если ваша модель не определяет этот метод, то она будет использовать реализацию в ActiveRecord :: Base, которая просто возвращает идентификатор.

class SomeModel 
    def to_param 
    "unit#{id}" 
    end 
end 

Вы можете обратиться https://gist.github.com/agnellvj/1209733, например

+0

Я думаю, что нужно работать в Дружественные-Id. Но, что входит в часть {code}, если вы использовали to_param? – Longcreative

+0

Изменен мой ответ. В вашем случае это будет id – usha

+0

Благодарим вас за ввод. Я решил это, удалив индекс в моем классе Units. Это позволило дублировать названия групп. Затем я использовал SCOPE в Friendly id. – Longcreative