0

我一直在尝试按照此说明在铁轨上创建一条简单的路线

http://guides.rubyonrails.org/routing.html

我的问题是,当我想进入我的方法时,我得到了一个奇怪的错误。

我有一个控制器用户,在我的路线上我写了这样的东西

resources :users do
  match "/custom/" => "user#custom"
end

所以,在我的控制器上,我添加了这段代码

def custom
    @user = User.find(params[:user_id])
end

但是当我尝试输入 localhost:3000/users/1/custom 时,我收到一个错误,例如

未初始化的常量 UserController

我可以看到做耙式路线

user_custom     /users/:user_id/custom(.:format)    user#custom

知道如何解决这个问题吗?

我希望这条路线提交表单......是否可以使用这条路线(如果我让它运行)来使用 ajax?我想提交一个表格。

谢谢

4

2 回答 2

1

将您的路线更改为:

resources :users do
  match "/custom/" => "users#custom"
end

你应该避免使用match虽然,因为它会在 Rails 4 中被弃用。试试这个

resources :users do
  get :custom, on: :member
end

get是动词,:custom路线,on: :member表示您正在寻找/users/:id/custom路线而不是路线/users/custom。如果您正在寻找后者,请执行以下操作:

resources :users do
  get :custom, on: :collection
end
于 2013-05-07T00:43:51.920 回答
1

另一种方法是这样的,我更喜欢:

resources :users do
  get 'custom', on: :collection
end

这给了你一条路线/users/custom。如果你确实使用on: :member,那么它会给你一个路线/users/:id/custom

您还可以使用块来为集合或成员定义多个自定义操作。

例如:

resources :users do
  collection do
    get 'custom'
    post 'some_other_method'
  end

  member do
    get 'some_action'
  end
end
于 2013-05-07T00:46:12.197 回答