2012-07-05 5 views
1

Ruby on Rails의 새로운 기능입니다. 나는 복수형 대신 단일 컨트롤러 이름을 사용하고 싶다.레일 콘트롤러 이름

여기 제가 달성하고자하는 URL이 있습니다. 내가

http://foobar.com/admin/login 

에 액세스하려고하면 다음

http://foobar.com/admin/login

내가 어떻게 단수 만들
uninitialized constant Admin::LoginsController 

를 얻을 내가

rails g controller admin::login 

을 시도 할 것입니다 컨트롤러 대신 복수형?

답변

1

레일스 대회에 반대 할 때마다 자신에게 물어 봐야 할 첫 번째 일은 왜 그런 식으로 그렇게하는 것입니까? 로그인 기능을 만들려면 관리자/사용자 컨트롤러와 세션 컨트롤러가 있어야합니다. 중첩 된 리소스와 사용자 지정 경로를 사용하여 url/admin/login /을 만들 수는 있지만 세션 컨트롤러에 논리가 있습니다.

하지만 실제로 어떤 이유로 든 변경해야하는 경우 다음 유형의 기술을 사용하여 변경할 수 있습니다. override default pluralize for model-name in rails3.

1

먼저 rails namespaces을 확인해야합니다. 예를 들어 :

namespace :admin do 
    resources :posts, :comments 
    match 'login' => 'controller#action' 
end 

admin 접두사로 경로를 생성합니다. 그래서 단수 컨트롤러를 원하면 inflectors에 깊이 들어가야합니다. 확인은 다음 링크 :

는 예를 들어, config/initializers/inflections.rb에 다음 줄을 추가합니다 :

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.uncountable "login" 
end 

을 일반적으로 당신은 사용자 user 또는 login 행동 session 컨트롤러를해야 , 당연하지. 자세한 정보 및 사용법은 예를 들어 devise gem을 참조하십시오.

관련 문제