我一直在尝试按照说明在轨道上创建一个简单的路线
我的问题是,当我想进入我的方法时,我得到一个奇怪的错误。
我有一个控制器用户,在我的路线上我写了这样的东西
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?我想提交一份表格。
由于
答案 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