如何从Rails资源中删除ControllerName?

时间:2014-06-27 14:55:34

标签: ruby-on-rails ruby-on-rails-4 routes

我希望将用户资源的new_user路径映射到' ROOT_DOMAIN / new' URL。我的routes.rb看起来像这样:

  #new_user GET      /users/new(.:format)                        users#new

  # User Resource
  match 'new', :to => 'users#new', via: [:get, :post]
  resources :users do
    collection do
      match 'new', :to => 'users#new', via: [:get, :post]
    end  
  end

因此,虽然我可以使用

点击/新网址以执行所需操作
  match 'new', :to => 'users#new', via: [:get, :post]

但new_user路径仍会导致' / users / new'。如何从new_user方法中删除controller_name?

1 个答案:

答案 0 :(得分:1)

您的new_user_path会将您带到user#new,因为这是rails构建资源丰富路由的方式。请查看rails guides了解详情。您需要将as:选项传递给路径,以便为它们提供正确的帮助方法,例如:

post '/home' => "home#index", as: :home

这将为您提供两个帮助者home_path和home_url

现在你有了

resources :users do
  collection do
    match 'new', :to => 'users#new', via: [:get, :post]
  end  
end

如果您在终端中执行 rake路由,您会看到new_user帮助程序已分配给user#new您需要为其提供不同的路径帮助程序,然后将new_user帮助程序分配给自定义路径

resources :users do
  collection do
    match 'new', :to => 'users#new', via: [:get, :post], as: :old_new_user
  end  
end

然后您可以将new_user帮助程序用于自定义路由

match 'new', :to => 'users#new', via: [:get, :post], as: :new_user 

您可以通过在终端

中执行rake routes来检查您的路径助手