我试图有一个管理部分,可以在飞行中创建用户。但它似乎总是错误的,从控制台我看到:通过管理界面创建用户似乎试图始终创建ID:1
Started POST "/pressroom/users" for 127.0.0.1 at 2014-01-22 15:56:11 -0800
Processing by UsersController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"rweuZHlkUJOL0D3GDzBD82pSEk7z+22bZ79Gsyht5Pg=", "user"=>{"email"=>"[email protected]", "username"=>"", "firstname"=>"", "lastname"=>"", "city"=>"", "zip"=>"", "state"=>"", "country"=>"", "role_ids"=>"2"}, "commit"=>"Update"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1
Role Load (0.5ms) SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 ORDER BY "roles"."id" ASC LIMIT 1 [["user_id", 1]]
(0.2ms) BEGIN
(0.2ms) ROLLBACK
Role Load (0.5ms) SELECT "roles".* FROM "roles"
Rendered users/_form.html.erb (14.1ms)
Rendered users/new.html.erb within layouts/pressroom (15.3ms)
Rendered pressroom/_presstools.html.erb (1.0ms)
Rendered pressroom/_header.html.erb (0.5ms)
Rendered pressroom/_footer.html.erb (0.3ms)
Completed 200 OK in 50ms (Views: 38.5ms | ActiveRecord: 2.0ms)
不知道为什么它的失败,但它看起来像user_id是始终为1,这将是错误的,因为我已经有2个用户的分贝user_id 1和2.错误是ROLLBACK。以下是本节的路线。
get 'pressroom/accounts/new' => 'users#new', :as => :admin_new_user
post 'pressroom/accounts/new' => 'users#create'
和users_controller我的新创建函数:
def new
@user = User.new
end
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
redirect_to users_admin_path, :notice => "User updated."
else
redirect_to users_admin_path, :alert => "Unable to update user."
end
end
def create
@user = User.new(params[:user_params])
if @user.save
redirect_to users_admin_path, notice: 'User was successfully created.'
else
redirect_to users_admin_path, :alert => "Unable to create user."
end
end
这里是我的形式进行调用:
<div class="panel-body">
<%= simple_form_for(@user) do |f| %>
<%= devise_error_messages! %>
<div class="form-group">
<%= f.label :email %>
<%= f.email_field :email, class: "form-control", :autofocus => true %>
</div>
<div class="form-group">
<%= f.label :username %>
<%= f.text_field :username, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :firstname %>
<%= f.text_field :firstname, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :lastname %>
<%= f.text_field :lastname, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :city %>
<%= f.text_field :city, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :zip %>
<%= f.text_field :zip, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :state %>
<%= f.text_field :state, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :country %>
<%= f.text_field :country, class: "form-control" %>
</div>
<h3>Change Role</h3>
<%= f.input :role_ids, :collection => Role.all, :as => :radio_buttons, :label_method => lambda {|t| t.name.titleize}, :label => false, :item_wrapper_class => 'inline', checked: @user.role_ids.first %>
<div class="form-group">
<%= f.submit "Update", class: "btn btn-primary" %>
</div>
<% end %>
</div>
你做错了什么,但没有看到你的代码是不可能说*什么*。此外,你正在谈论一个错误,但我没有看到任何地方的错误。 – Mischa
我已经添加了一些代码,对此感到抱歉。 –
你发布了'update'动作。你的“创造”行为是什么样子的? – Mischa