Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails坚持在响应时返回html_Ruby On Rails_Rest_Ruby On Rails 4.2_Actionpack - Fatal编程技术网

Ruby on rails Rails坚持在响应时返回html

Ruby on rails Rails坚持在响应时返回html,ruby-on-rails,rest,ruby-on-rails-4.2,actionpack,Ruby On Rails,Rest,Ruby On Rails 4.2,Actionpack,我一直在尝试配置rails restful API服务 我已经用设置了该项目,并使用Desive using添加了令牌身份验证。我的目标是所有的响应都是JSON格式,这就是我认为RailsAPI将要实现的 在运行Desive rake generator之后,我尝试与注册端点进行交互,这是我对服务器的curl请求: curl --form "email=foo@email.com" --form "password=abc123" --form "password_confirmation=ab

我一直在尝试配置rails restful API服务

我已经用设置了该项目,并使用Desive using添加了令牌身份验证。我的目标是所有的响应都是JSON格式,这就是我认为RailsAPI将要实现的

在运行Desive rake generator之后,我尝试与注册端点进行交互,这是我对服务器的
curl
请求:

curl --form "email=foo@email.com" --form "password=abc123" --form "password_confirmation=abc123" -H "Accept: application/json" -H "Content-type: application/json" -X POST --dump-header headers http://api.local.dev:3000/
我得到的答复是:

<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>Action Controller: Exception caught</title>
  <style>
    body {
      background-color: #FAFAFA;
      color: #333;
      margin: 0px;
    }
.....
我想了解的是如何完全禁用所有html响应

以下是我的
Gemfile

source 'https://rubygems.org'


gem 'rails', '4.2.1'

gem 'rails-api'

gem 'pg'
gem 'activerecord-postgis-adapter'
gem 'rgeo'
gem 'devise'
gem 'devise_token_auth' # Token based authentication for Rails JSON APIs
gem 'omniauth' # required for devise_token_auth

# To use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

# Use unicorn as the app server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano', :group => :development

# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'

group :development, :test do
    gem 'pry-byebug', '=1.3.3'
    gem 'pry-stack_explorer'
    gem 'pry-rails'
    gem 'pry-remote'

  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'

  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'

  gem "rspec-rails", "~> 3.3"
end

group :test do

  #gem "shoulda-matchers"
  gem "factory_girl_rails"
  gem 'ffaker'
end
我的用户模型:

class User < ActiveRecord::Base
  # Include default devise modules.
  devise :database_authenticatable, :registerable,
          :recoverable, :rememberable, :trackable, :validatable,
          :confirmable, :omniauthable
  include DeviseTokenAuth::Concerns::User
end
class用户
您可以做以下几件事:

  • 为您的路由添加一个约束,以便它们只提供JSON(您已经这样做了),即:
  • 约束:{format::json}
    

  • 在应用程序控制器中添加自定义异常处理程序:
    
    从例外情况中拯救你|
    呈现json:e.to_json,状态:500
    结束
    

  • 你可以做几件事:

  • 为您的路由添加一个约束,以便它们只提供JSON(您已经这样做了),即:
  • 约束:{format::json}
    

  • 在应用程序控制器中添加自定义异常处理程序:
    
    从例外情况中拯救你|
    呈现json:e.to_json,状态:500
    结束
    

  • 我将中的
    rescue\u添加到应用程序控制器,但actionpack跟踪页面仍在响应中。我将
    中的
    rescue\u添加到应用程序控制器,但actionpack跟踪页面仍在响应中。ILS将在开发环境中呈现“有用”错误页面。可以使用
    config.action\u controller.consumer\u all\u requests\u local=false关闭它们。Rails将通过在开发环境中呈现“有用的”错误页面来实现。可以使用
    config.action\u controller.consumer\u all\u requests\u local=false关闭它们。
    
    Rails.application.routes.draw do
      namespace :api, constraints: { format: 'json' } do
        scope :v1 do
          mount_devise_token_auth_for "User", at: 'auth'
        end
      end
    end
    
    class User < ActiveRecord::Base
      # Include default devise modules.
      devise :database_authenticatable, :registerable,
              :recoverable, :rememberable, :trackable, :validatable,
              :confirmable, :omniauthable
      include DeviseTokenAuth::Concerns::User
    end