2013-10-05 2 views
1

Ruby on Rails 4.0. 나는 '관리자'가 표준 자원 경로를 사용하여 수정할 수있는 '특수'모델을 가지고 있습니다. 그러나 'Specialties'를 예쁜 방식으로 표시하는 데 사용되는 별도의 소비자 대면 컨트롤러도 있습니다.공백 대신 밑줄을 사용하여 연결

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

사이트 번호 전문 컨트롤러 액션은 다음과 같다 : 따라서 나는 다음과 같은 경로를 가지고

다음 %가 루트 탈출처럼이 URL을 초래
def specialty 
    @specialty = Specialty.find_by_name(params[:name]) 
end 

:

/specialty/project%20management 

을 나는 다음과 같은 것을 가지고 싶습니다 :

/specialty/project_management 

공백을 밑줄로 대체하고 컨트롤러 동작에서 올바른 모델을 찾는 방법은 무엇입니까? 보안에 대한 모든 측면 노트는 to_param를 사용

+0

'url_for'를 (를) 사용중인보기 또는 도우미 코드의 예가 있습니까? 이 경로를 생성하는 방법을 보려면이 부분을 확인해야합니다. –

답변

1

@manishie에 의한 대답은 좋다, 그러나 당신이 처리 (그리고 훨씬 더) 보석도 있습니다 (Friendly ID). 앞에서 언급 한 것처럼 to_param 트릭을 기반으로하지만 다른 특수 문자를 처리하고 충돌을 처리하는 옵션도 있습니다.

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

Specialty.friendly.find(params[:name]) 
관련 문제