0
我跟随Michael Martl的Ruby on Rails教程,无论出于何种原因我无法添加用户从UI /页面到数据库(sqlite3)。这些参数传递没有错误,我看在服务器日志的参数,但该数据未达到DB完好:在Rails中发布的参数没有到达ActiveModel,无法从UI发布数据到SQLite,但它可以从Rails控制台运行
Started POST "/users" for 192.168.1.100 at 2013-03-05 01:20:39 -0500
Processing by UsersController#create as HTML
Parameters: {"utf8"=>"\u2713", "authenticity_token"=>"7VZ7HobCW9YrVBf/LadINF35c9ZThTYb2vBsA+02180=", "user"=>{"name"=>"smith", "email"=>"[email protected]"}, "commit"=>"Create my account"}
(0.1ms) begin transaction
(0.1ms) rollback transaction
Rendered shared/_error_messages.html.erb (4.1ms)
Rendered users/new.html.erb within layouts/application (7.1ms)
Rendered layouts/_shim.html.erb (0.0ms)
Rendered layouts/_header.html.erb (0.7ms)
Rendered layouts/_footer.html.erb (0.8ms)
#<ActiveModel::Errors:0xa8e2934 @base=#<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil>, @messages={:name=>["can't be blank"], :email=>["can't be blank"]}>
Completed 200 OK in 89ms (Views: 77.4ms | ActiveRecord: 0.8ms)
当我通过相同的参数数据库从一个Rails控制台,它工作正常;用户被添加/保存没有问题。只有在用户界面上才会丢失数据。
这里是我的架构信息和用户模型文件:
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# name :string(255)
# email :string(255)
# created_at :datetime not null
# updated_at :datetime not null
#
class User < ActiveRecord::Base
attr_accessible :name, :email
#has_many :microposts
before_save { email.downcase! }
validates :name, presence: true
validates :email, presence: true
end
我的控制器:
class UsersController < ApplicationController
def new
@user = User.new
end
def show
@user = User.find(params[:id])
end
def create
@user = User.new(params[:id])
if @user.save
redirect_to @user
else
render 'new'
Rails.logger.info(@user.errors.inspect)
end
end
end
我在此代码为现在而一直盯着,任何帮助,将不胜感激!
感谢您的快速响应!这工作。我想知道为什么rails tutorial示例代码在验证之前具有before_save方法? https://github.com/railstutorial/sample_app_2nd_ed/blob/master/app/models/user.rb – jsutton 2013-03-06 00:25:47