【问题标题】:ActiveRecord object created with null values使用空值创建的 ActiveRecord 对象
【发布时间】:2016-09-09 15:40:05
【问题描述】:

我正在尝试从 AJAX 发送的 json 创建一个“访问”对象。这是模型:

class Visit < ApplicationRecord
    serialize :number, JSON
    serialize :time_spent, JSON
end

这是迁移文件:

class CreateVisits < ActiveRecord::Migration[5.0]
    def change
      create_table :visits do |t|
          t.integer :number
          t.integer :time_spent

          t.timestamps
      end
    end
 end

我有一个名为 show 的动作,其中包含以下脚本:

var start;
$(document).ready(function() {
    start = Date.getTime();
    $(window).unload(function() {
        end = Date.getTime;
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: "/log",
            data: { visit: { 'number': <% @number %>,'time_spent': end - start} }
        })
    });
}

衡量在页面上花费的时间。 '/log' 的路径是:

get '/log', to: 'home_page#log', :defaults => { format: 'json' }

而 home_page#log 是:

def log
   @visit = Visit.new(visit_params)
   respond_to do |format|
       if @visit.save
          format.json { render json: @visit.to_json }
       end
   end
end

visit_params 在哪里:

private
def visit_params
    params.require(:visit).permit(:number, :time_spent)
end

当我导航到 /log 时,我收到一条错误消息,指出访问参数丢失或为空。

编辑:

我修复了路由中的错误,现在它是发布而不是获取。但是,终端中没有记录访问保存的消息。

【问题讨论】:

    标签: ruby-on-rails json ajax activerecord


    【解决方案1】:

    似乎路线应该是post而不是get:

    post '/log', to: 'home_page#log', :defaults => { format: 'json' }
    

    【讨论】:

    • 我这样做了,但没有保存访问对象
    【解决方案2】:

    确保您的 JS 有效。进入控制器的参数的输出是什么?还要确保在您的 ERB 中包含“=”:&lt;%= @number %&gt;

    试试:

    var start;
    var end;
    $(document).ready(function() {
     start = new Date().getTime();
     $(window).unload(function() {
        end = new Date().getTime();
        $.ajax({
          type: 'POST',
          dataType: 'json',
          url: "/log",
          data: { visit: { 'number': <%= @number %>,'time_spent': end - start} }
        })
     });
    }
    

    同样在您的迁移中,您应该将其保存为文本而不是整数。

    【讨论】:

      猜你喜欢
      • 2015-02-01
      • 1970-01-01
      • 2014-09-05
      • 2020-06-19
      • 2015-04-22
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 2018-03-11
      相关资源
      最近更新 更多