1

我已经尝试了很长时间,但没有得到我正在做的错误,这是我的控制器

class UsersController < ApplicationController
 puts "before"
 def create
  puts  "hiiiiiiiiiiiiiiiiii"
  puts params
  User.create(:birthday=> params["dateOfBirth"],:email=> params["emailId"])
 end
 puts "after"
end

这是我的路线
发布 '/sign_up', :to => "users#create"

这给了我一个 200 OK 响应代码,但实际上并没有进入“创建”方法并将值存储在数据库中它正在“之前”和“之后”而不是“hiiiiii”看起来像我在做一些愚蠢的错误但需要帮助完成它谢谢。!

这就是我从客户端进行查询的方式。

$.ajaxSetup({
  beforeSend: function(xhr) {
    xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
  }
});

var registration = function(){
  var user = {
   firstname   : $("#firstname").val(),
   lastname    : $("#lastname").val(),
   emailId     : $("#email").val(),
   password    : $("#psw").val(),
   dateOfBirth : $("#birthday").val() };   
  $.post("/sign_up", user, function(data){
    console.log(data);
  },'json');

};

4

1 回答 1

0

对于真正优秀的调试对象,请使用 gem rails- pry 。将 gem 'pry-rails' 添加到 gemfile 中,运行 'bundle install'。现在您可以将“binding.pry”添加到代码的任何位置,当您的应用程序到达此行时,您将可以从控制台完全访问此代码。这比使用“puts”要好。对于您的情况,它将是:

class UsersController < ApplicationController
  puts "before"
  def create
    binding.pry
    User.create(:birthday=> params["dateOfBirth"],:email=> params["emailId"])
  end
  puts "after"
end

运行应用程序,打开浏览器并转到 url。比打开控制台,您将在“内部”创建操作

更新 看看我的例子,我已经创建了它并且一切正常

型号:User.rb

class User < ActiveRecord::Base
  attr_accessible :city, :email, :gender, :name
end

控制器:UsersController.rb

def create
    binding.pry
    @user = User.new(params[:user])
    session[:user] = @user
    respond_to do |format|
      if @user.save
        format.html { redirect_to users_path, notice: 'User was successfully created.' }
        format.json { render json: @user, status: :created, location: @user }
      else
        format.html { render action: "new" }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
end

用户.js:

$(function() {
  $.ajaxSetup({
    beforeSend: function(xhr) {
      xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
    }
  });

  var registration = function(){
    alert('a');
    var user = {
     name   : $("#name").val(),
     city   : $("#city").val(),
     gender : $("#gender").val()
    };
    $.post("/sign_up", user, function(data){
      console.log(data);
    },'json');
  }

  $('#but').click(registration);
});

新的.html.erb:

<form>
  <input id="name">
  <input id="city">
</form>
<button id="but">create</but>

路线.rb:

resources :users
post '/sign_up', :to => "users#create"
root :to => 'users#new'

我运行应用程序,填写表格,打开控制台 -> 我正在创建操作

于 2013-07-26T18:31:50.423 回答