为什么我的“加入”行动不起作用,它说无法找到行动'show'

时间:2010-10-24 22:01:37

标签: ruby-on-rails

在我的UserController中,我有:

def join
end

我的/ views / user /文件夹中有一个join.html.erb。

我的路线有:

resources :user

当我去:

http://localhost:3000/user/join

我明白了:

无法找到UserController

的操作'show'

3 个答案:

答案 0 :(得分:5)

Re:为什么找不到加入操作?

要回答您的具体问题,您要为自己的用户模型添加“加入”操作。

您的问题是您没有定义与网址http://localhost:3000/user/join

匹配的路线

路由文件中的行resources :user仅定义七个标准其余动词/动作的路由:

索引,新建,创建,显示,编辑,更新,销毁

请参阅:http://apidock.com/rails/ActionController/Resources/resources

补充:要修复,您需要添加显式路径或通用路由。 Routing docs

添加: Re:为什么我看到重新显示错误消息?为了超精确,路由选择器“GET / usr /:id”(由您的资源调用创建)正在用于为User资源选择SHOW操作。 :id值设置为“join”。由于您没有在控制器中定义Show方法,这就是您所看到的错误。

答案 1 :(得分:2)

您正在使用资源,但具有非REST操作,因此您需要使用适当的HTTP谓词将连接操作添加到路由中:

map.resources :users, :member => { :join => :get }

答案 2 :(得分:0)

地点:

def show
end
在你的UserController中

确定:

应用/控制器/ users_controller.rb

def join
end

应用/视图/用户/ join.html.erb

<强>配置/ routes.rb中

resources :users