在RubyonRails中读取JSON对象

在RubyonRails中读取JSON对象,ruby,ruby-on-rails-5,Ruby,Ruby On Rails 5,我是RubyonRails的初学者,我正在尝试将我制作的静态网站转换成Rails应用程序,在那里我可以存储客户和引用数据。我正试图以RESTful API的形式实现这一点,我的站点将发送一个包含客户信息的JSON对象。我检查JSON对象中的电子邮件是否与数据库中的任何电子邮件匹配,如果匹配,我会发回该客户的id。如果没有,我会创建一个新客户并发回该id。我遇到的问题是,无论我如何编写,我的rails应用程序都不会读取JSON数据,因此如果我的数据库中没有任何内容,它会创建一个具有所有空属性的客户

我是RubyonRails的初学者,我正在尝试将我制作的静态网站转换成Rails应用程序,在那里我可以存储客户和引用数据。我正试图以RESTful API的形式实现这一点,我的站点将发送一个包含客户信息的JSON对象。我检查JSON对象中的电子邮件是否与数据库中的任何电子邮件匹配,如果匹配,我会发回该客户的id。如果没有,我会创建一个新客户并发回该id。我遇到的问题是,无论我如何编写,我的rails应用程序都不会读取JSON数据,因此如果我的数据库中没有任何内容,它会创建一个具有所有空属性的客户,当我再次运行时,它会显示“哦,我有一个空电子邮件的客户”,并返回该客户

{
    "fname": "William",
    "lname": "Shakespeare",
    "email": "wshakespeare@test.com",
    "bname": "MyCompany",
    "primary": "555-555-5555",
    "secondary": ""
}
下面是我的JSON对象的一个示例

以下是我的控制器的外观:

class CustomersController < ApplicationController
skip_before_action :verify_authenticity_token
wrap_parameters format: [:json, :xml, :url_encoded_form, :multipart_form]

def create
    @query = Customer.where(:email === params[:email])
    if @query.empty? == true
        redirect_to action: "new", status: 301
    else
        @theid = @query.first.id
        render json: {status: 'SUCCESS', message: 'Existing customer', theid:@theid}
    end
end
def new
    Customer.create(fname: params[:fname], lname: params[:lname], email: params[:email], bname: params[:bname], primary: params[:primary], secondary: params[:secondary])
    render json: {status: 'SUCCESS', message: 'New customer', theid: Customer.last.id}
end
class CustomerController

任何帮助都将不胜感激。谢谢。

您是否将rails作为API服务器运行?或者使用rails MVC作为“正常”?我认为问题在于批量分配保护,因为客户的故障属性为null。不确定这与rails 5或6有多相关,但也许你想查看rails 4部分,我刚刚在rails中生成了一个正常的默认应用程序。我不知道作为API运行它有一个特殊的设置——对不起,这里是初学者。