如何在轨道上创建一个简单的路由,我可以将它用于ajax表单吗?

时间:2013-05-06 23:32:32

标签: ruby-on-rails-3

我一直在尝试按照说明在轨道上创建一个简单的路线

  

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

做rake路线我可以看到

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

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

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

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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