我希望将用户资源的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?
答案 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
来检查您的路径助手