2013-10-05 4 views
1

Ruby on Rails 4.0. У меня есть модель «Specialty», которую «админы» могут изменять с помощью стандартных маршрутов ресурсов. Однако есть также отдельный контроллер, ориентированный на потребителя, который используется для демонстрации этих «Специальностей» довольно красиво. Таким образом у меня есть следующие маршруты:Маршрут с использованием символов подчеркивания вместо пробелов

get "specialty/:name" => "site#specialty", as: :site_specialty 
resources :specialties 

Сайт # специальности действия контроллера заключается в следующем:

def specialty 
    @specialty = Specialty.find_by_name(params[:name]) 
end 

Это приводит к URLs как следующий процент спасся маршрутов:

/specialty/project%20management 

Я бы предпочел бы что-то вроде этого:

/specialty/project_management 

Как заменить пробелы символами подчеркивания и по-прежнему искать правильную модель в действии контроллера? Любые побочные замечания по безопасности также оценили

+0

Есть ли пример вашего вида или кода помощника, где вы используете 'url_for'? Нам нужно увидеть это, чтобы увидеть, как вы генерируете эти пути. –

ответ

1

Ответ на @manishie это хорошо, но есть также драгоценный камень, который обрабатывает это для вас (и многое другое) , называемый Friendly ID. Он основан на том же to_param трюке, как упоминалось ранее, но также имеет опции для обработки других специальных символов и обработки столкновений.

class Specialty < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :name 
end 

Specialty.friendly.find(params[:name]) 
Смежные вопросы