宁静的路由

时间:2012-01-08 07:45:21

标签: ruby-on-rails ruby-on-rails-3

我正在编写一个简单的查找,检查数据库中是否已存在用户名。到目前为止,事情已经相当直接了。但是我确实遇到了如何进行路由的问题。

目前在我的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)

1 个答案:

答案 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)