我正在编写一个简单的查找,检查数据库中是否已存在用户名。到目前为止,事情已经相当直接了。但是我确实遇到了如何进行路由的问题。
目前在我的routes.rb中我有以下内容:
namespace :broker do
namespace :userdesk do
resources :dashboards do
end
resources :accounts do
get :validateUsername
end
end
end
当我使用rake路由时,我获得了validateUsername的以下路由:
broker_userdesk_account_validateUsername GET /broker/userdesk/accounts/:account_id/validateUsername(.:format) {:action=>"validateUsername", :controller=>"broker/userdesk/accoun
ts"}
对于此操作,我传递的是用户名而不是account_id。有没有办法修改路由,以便它使用这样的东西:
/broker/userdesk/accounts/:username/validateUsername(.:format)
答案 0 :(得分:1)
首先,这似乎并不特别“Railsy”或RESTful,但您可以使用match
match '/broker/userdesk/accounts/:username/validateUsername' => 'broker/userdesk/accounts#validateUsername'
<强>已更新强>
我推荐使用路线指南: http://guides.rubyonrails.org/routing.html
我在示例中忽略了您的命名空间。
如果您在帐户资源中嵌套,您可能希望按帐户范围,而不是用户名。
尝试像/users/:id/validate
这样的东西会更加RESTful。
事实上,如果你所做的只是检查用户是否存在,你可以点击用户的show动作并处理404s:
resources :users # would give you /users/:id where you would either return a user or a not found (400)