我的路线中有以下内容:
resource :login, only: [:new, :create, :destroy]
resources :users, only: [:new, :create] do
resources :notes
end
但我希望网址为'my-domain / login'而不是'my-domain / login / new'和'my-domain / register'而不是'my-domain / users / new'。
我该怎么做?我尝试了以下但是没有用:
match 'login' => 'login#new'
match 'register' => 'users#new'
resource :login, only: [:create, :destroy]
resources :users, only: [:create] do
resources :notes
end
这给了我错误
undefined local variable or method `logins_path' for #<#<Class:0x007fd99c40c608>:0x007fd99c87bdd8>
访问'my-domain / login'时
答案 0 :(得分:0)
试试这个:
match '/login', to: 'login#new'
match '/register', to: 'users#new'
resource :login, only: [:new, :create, :destroy]
学习Ruby on Rails的一个非常好的教程(我敢说“最好”)是railstutorial.org。有一章关于制作working login and register page。
<强>更新强>
如果您不希望用户访问/ users / new,我认为您当前的用户资源有效:
resources :users, only: [:create] do
resources :note
end
因为它只匹配users / create的路由。如果用户转到/ users / new,您还可以将用户重定向到/注册。用户控制器中的新操作:
def new
redirect_to register_path
end