请求不要进入控制器操作

时间:2013-07-26 16:57:06

标签: ruby-on-rails

我一直在尝试这个但是没有得到我正在做的错误, 这是我的控制器

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 =&gt; “用户#创建”

这给了我一个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');

};

1 个答案:

答案 0 :(得分:0)

对于非常好的调试pupposes使用gem rails-pry。将gem'prisy-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

运行应用程序,打开浏览器并转到网址。比打开控制台,你将'内部'创建行动

<强>更新 看看我的例子,我创造了它并且一切正常

型号:User.rb

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

Controller: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

users.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);
});

new.html.erb:

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

routes.rb中:

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

我运行应用程序,填写表单,打开控制台 - &gt;我在创造行动