2012-01-08 2 views
0

나는 데이터베이스에 사용자 이름이 이미 있는지 확인하는 간단한 검색을 작성하고 있습니다. 지금까지 상황은 상당히 솔직했습니다. 그러나 나는 내 라우팅을 어떻게하고 있는지에 문제가있다.안정된 라우팅

현재 내 routes.rb에서 나는 다음과 같습니다

namespace :broker do 
    namespace :userdesk do 
     resources :dashboards do 
     end 
     resources :accounts do  
      get :validateUsername 
     end 
    end 
end 

내가 레이크 경로를 사용하는 경우, 내가 validateUsername에 대해 다음 경로를 얻을 : broker_userdesk_account_validateUsername GET /broker/userdesk/accounts/:account_id/validateUsername(.:format) {:action=>"validateUsername", :controller=>"broker/userdesk/accoun ts"}

이 행동을 내가 전달하고 account_id가 아닌 username. 이 /broker/userdesk/accounts/:username/validateUsername(.:format)

답변

1

이 모든 우선은 특히 'Railsy'을하지 않는 것 또는 편안하고 있지만 match

match '/broker/userdesk/accounts/:username/validateUsername' => 'broker/userdesk/accounts#validateUsername' 
를 사용하여 특정 경로를 정의 할 수 있습니다 : 그것은 같은 것을 사용하도록 경로를 변경하는 방법이 있나요 http://guides.rubyonrails.org/routing.html :

내가 라우팅에 레일 가이드를 추천

업데이트되었습니다.

예제에서 내 네임 스페이스를 무시했습니다.

계정 리소스 내에 중첩하는 경우 사용자 이름이 아닌 계정별로 범위를 지정할 수 있습니다.

/users/:id/validate과 같은 것을 시도하면 더 쉬울 것입니다.

사실, 당신은 사용자가 존재하는지 확인하고 있습니다 모든 일을, 당신은 404를 사용자의 show 액션을 명중하고 처리 할 수있는 경우 : 당신이 "Railsy을"보이지 않는 방법

resources :users # would give you /users/:id where you would either return a user or a not found (400) 
+0

설명 할 수 있습니까? 나는 해킹 방법을 사용하는 대신 모범 사례를 따르는 것을 선호한다. – Tempname

+0

내 대답 – lebreeze

+0

업데이트 특정 사용자 또는 사용자 ID가 있는지 확인하지 않습니다. 나는 사용자 이름이 존재하는지 여부를 검증하고 있습니다. 따라서 쇼 동작을 사용하는 것은 실제로 옵션이 아닙니다. 이 점검은 사용자 작성 양식에서 수행됩니다. 사용자가 사용자 이름 필드에서 포커스를 받으면이 검사가 실행됩니다. – Tempname

관련 문제