bootstrap-sass gemを使用して、Rails 3.2.13 で小さなアプリを作成しています。次のような状況があります。
私の「sign_up」コントローラーには、次のようなユーザーを作成する「index」アクションがあります。
#sign_up controller
def index
@user = User.new
end
今、私の index.html.erb には次の形式があります。
# sign_up controller => index.html.erb
<%= form_for @user, :html => {:class => 'form-horizontal'} do |f| %>
<div class = 'control-group'>
<%= f.label :username, :html => {:class => 'control-label'} %>
<%= text_field_tag :username, nil, :placeholder => 'Username' %>
</div>
<div class = 'control-group'>
<%= f.label :email, :html => {:class => 'control-label'} %>
<%= email_field_tag :email, nil, :placeholder => 'Email' %>
</div>
<div class = 'control-group'>
<%= f.label :password, :html => {:class => 'control-label'} %>
<%= password_field_tag :password, nil, :placeholder => 'Password' %>
</div>
<div class = 'control-group'>
<%= f.label :confirm_password, :html => {:class => 'control-label'} %>
<%= password_field_tag :confirm_password, nil, :placeholder => 'Confirm' %>
</div>
<%= f.submit 'Create', :class => 'btn btn-primary'%>
これは users_controller に POST し、create アクションを呼び出します。
# users controller
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, 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
問題は、@user は保存されますが、パラメーターが失われることです! コンソール ログ:
Started POST "/users" for 127.0.0.1 at 2013-05-29 12:14:47 -0300
UsersController#create による HTML パラメーターとしての処理: {"utf8"=>"✓", "authenticity_token"=>"wI5sNQV/lkn8GtYv5YkRLZ6HzxPg5MtoVXuarLulv30=", "username"=>"nonickname", "email"=>"no@bar. com", "password"=>"[FILTERED]", "confirm_password"=>"[FILTERED]", "commit"=>"Create"} (0.1ms) トランザクション SQL の開始 (0.9ms) INSERT INTO "users" ("admin", "created_at", "email", "password_hash", "password_salt", "updated_at", "username") 値 (?, ?, ?, ?, ?, ?, ?) [["admin" 、nil]、["created_at"、水曜日、2013 年 5 月 29 日 15:14:47 UTC +00:00]、["email"、nil]、["password_hash"、nil]、["password_salt", nil], ["updated_at", Wed, 29 May 2013 15:14:47 UTC +00:00], ["username", nil]] (148.9ms) commit transaction...
なぜそれが起こるのか、どうすればこれを修正できますか? フォームが users_controller ドメインであることはわかっていますが (修正する予定です)、問題ではないようです!
助けてくれてありがとう!