Ruby on rails 无法使用json设计注册
我在使用/users/sign\u进行设计注册时遇到问题。我必须使用curl通过rails终端传递注册详细信息,如下所示:Ruby on rails 无法使用json设计注册,ruby-on-rails,json,curl,devise,Ruby On Rails,Json,Curl,Devise,我在使用/users/sign\u进行设计注册时遇到问题。我必须使用curl通过rails终端传递注册详细信息,如下所示: curl: //your-domain:3000/users/sign_up --data "email=jump@gmail.com&password=123456789&password_confirmation=123456789" 它应该返回: {"success":true,"info":"Registered","email":"jump@ex
curl: //your-domain:3000/users/sign_up --data "email=jump@gmail.com&password=123456789&password_confirmation=123456789"
它应该返回:
{"success":true,"info":"Registered","email":"jump@example.com","auth_token":"N8N5MPqFNdDz3G1jRsC9"}
但我收到以下错误消息:
ActionController::RoutingError (No route matches [POST] "/users/sign_up"):
当用户/登录正常工作时:
curl: //your-domain:3000/users/sign_in.json --data "email=abc@gmail.com&password=123456789"
返回:
{"success":true,"info":"Logged in","auth_token":"czzBpiNS7mkkQJAbHyMo","email":"abc@gmail.com"}
下面是我的RegistrationController类:
class RegistrationsController < Devise::RegistrationsController
before_filter :authenticate_user!, :except => [:create], :if => Proc.new { |c| c.request.format == 'application/json' }
respond_to :json
prepend_view_path 'app/views/devise'
def create
build_resource
if resource.save
sign_in resource
resource.ensure_authentication_token!
render :status => 200,
:json => { :success => true,
:info => "Registered",
:email => resource.email,
:auth_token => resource.authentication_token }
else
render :status => :unprocessable_entity,
:json => { :`enter code here`success => false,
:info => resource.errors }
end
end
end
下面是我们使用的内容(请在--“register”@top上查看)
试试这些代码,我用我的rails api来做
devise_scope :user do
post 'users' => 'registrations#create', :as => 'user_registration'
end
curl: //your-domain:3000/users --data "email=jump@gmail.com&password=123456789&password_confirmation=123456789"
如果我们运行
rake routes
我们可以看到designe注册(registration)有[new,create,update,…]
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
user_registration PATCH /users(.:format) devise/registrations#update
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
POST /users(.:format) devise/registrations#create
因此,路径#new
仅显示注册页面,我们使用#create
和注册新用户,这是正确的路径:/users.json
不是/user/sign\u.json
我们可以在这里看到:
POST /users(.:format) devise/registrations#create
你能显示你的
rake路由转储吗?
?当我使用rake路由获取转储时,我得到以下错误。这是因为rake verion。雷克流产了!您已经激活了rake 10.1.1,但是您的Gemfile需要rake 10.0.3。您刚刚更新了您的Gem吗?这意味着您有一个依赖于Rake10.0.3
的gem,但您运行的是Rails4.0.2
或我正在使用的gem“Rails”、“3.2.11”之类的东西。我想这不会是个问题。问题在于设计。如果我能够使用json登录,那么为什么我不能使用同样的方式登录呢。我不知道注册有什么问题。我被卡住了,无法前进。我正在使用android应用程序传递登录和注册详细信息/用户/sign\u-in工作正常,但/users/sign\u-up产生了问题。Hmmmm。如果你想的话,我可以发布我们用于此的代码?它有点老了,但应该对可能出现的问题给出一些想法。我得到以下错误:未定义的方法“注册”#好的,我想我知道你的问题-你可能有路径问题,我现在应该怎么做?我会发布我认为的错误-看看它是否修复了更多的错误?只有某些问题会导致这个问题,我正在使用这个curl:curl--data“电子邮件=jump@gmail.com&password=123456789&password_confirmation=123456789“我现在得到以下错误:{“成功”:错误,“信息”:{“电子邮件”:[“不能为空”],“密码”:[“不能为空”]}
devise_scope :user do
post 'users' => 'registrations#create', :as => 'user_registration'
end
curl: //your-domain:3000/users --data "email=jump@gmail.com&password=123456789&password_confirmation=123456789"
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
user_registration PATCH /users(.:format) devise/registrations#update
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
POST /users(.:format) devise/registrations#create
POST /users(.:format) devise/registrations#create