完全改变动作的URL

时间:2013-02-07 19:55:07

标签: ruby-on-rails-3.1 resources routes url-routing match

我的路线中有以下内容:

  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'时

1 个答案:

答案 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