Rails:简单的路由问题:as => :东西

时间:2011-07-11 20:41:36

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

使用Rails 3.1(不确定这是否适用于3.0等)

routes.rb 之间有什么区别:

  match "team" => "users#index"

  match "team" => "users#index", :as => :team

我问,因为docs说:


3.6命名路由 您可以使用:as选项为任何路径指定名称。

 match 'exit' => 'sessions#destroy', :as => :logout

这将在您的应用程序中创建logout_path和logout_url作为命名助手。调用logout_path将返回/退出


但是,在上面的第一个例子中,我可以访问team_path& team_url在我的观点中?!?那是什么:as => :团队做到了吗?我必须忽略一些东西,因为我看到的代码示例如下:

match "logout" => "sessions#destroy", :as => :logout
match "login" => "sessions#new", :as => :login
match "signup"  => "users#new", :as => :signup

虽然从我的有限测试来看:as => :something似乎多余了?!?

1 个答案:

答案 0 :(得分:2)

这似乎是多余的,但不是......当你的路线名称与你想给的名字不同时。

默认情况下,ActionDispatcher会执行很多操作。您应该尝试在控制台中触发rake routes来测试此行为。

另一个例子是快捷方式:

match "account/profile"
# same as
match "account/profile", :to => "account#profile"

将创建命名路线:account_profile