更改资源中单个路由的URL

时间:2017-07-24 17:49:05

标签: ruby-on-rails ruby

我们说我有

resources :users, only: %i[new create edit update]

我想将典型/users/new更改为/signup。 像下面的代码是丑陋的。

resources :users, only: %i[create edit update]
get '/signup', to: 'users#new'

有更好(更清洁)的方法吗?

编辑:似乎它是最好的方式。猜猜分组是保持其可读性的唯一方法。

2 个答案:

答案 0 :(得分:0)

据我所知,你能做的最好是

resources :users, only: [:new], path_names: { new: "sign_up" }, path: '/'
resources :users, only: [:create, :edit, :update]

至少可以更容易地告诉'sign_up'是用户资源的一部分。如果您对/users/sign_up没问题,可以在一行中完成,但想要摆脱/users部分会使这更加棘手。

答案 1 :(得分:0)

如果你想让他们保持井井有条,不介意路线是" / users / signup"那就行了。

resources :users, only: %i[create edit update] do 
  get 'signup', to: :new, on: :collection, as: :signup
end

然后rake routes

          signup_users GET      /users/signup(.:format)         users#new
                 users POST     /users(.:format)                users#create
            edit_users GET      /users/:id/edit(.:format)       users#edit
                 users PATCH    /users/:id(.:format)            users#update
                       PUT      /users/:id(.:format)            users#update