私は Michael Martl による Ruby on Rails チュートリアルに従っていますが、何らかの理由で UI/ページからデータベース (sqlite3) にユーザーを追加できません。パラメーターはエラーなしで渡され、サーバー ログにパラメーターが表示されますが、データはそのまま DB に到達しません。
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"=>"smith@dev.com"}, "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 コンソールから DB に同じパラメーターを渡すと、正常に動作します。ユーザーは問題なく追加/保存されます。データが失われるのは UI からのみです。
これが私のスキーマ情報とユーザー モデル ファイルです。
# == 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
私はこのコードをしばらく見つめていましたが、助けていただければ幸いです!