开发者

Saving data from select_tag

Trying to save data from a form to the database. Using the select_tag

<%= select_tag :size, options_from_collection_for_select(@plan, 'name', 'size') %>

Everything is fine, it grabs both size and email ,but when I try to store the data from the form (size), it passes NULL.

Here's my console:

Started POST "/users" for 127.0.0.1 at 2011-06-24 07:25:29 -0500
Processing by UserController#create as HTML
Parameters: {"utf8"=>"✓",   "auth开发者_开发技巧enticity_token"=>"MfT3gs5TtR+bvpaLro0E8Qm1zojaY2ms9WK0WprKPAw=", "size"=>"small",
"user"=>{"email"=>"5@gmail.com"}, "commit"=>"Create User"}
AREL (0.4ms)  INSERT INTO "users" ("email", "size", "created_at", "updated_at") VALUES
 ('5@gmail.com', NULL, '2011-06-24 12:25:29.646814', '2011-06-24 12:25:29.646814')
Redirected to http://localhost:3000/users/14
Completed 302 Found in 56ms

So, It gets the correct data from the form, as you see "size"=>"small", but when its time to store it, it passes it as NULL,

 VALUES ('5@gmail.com', NULL, '2011-06-24

I thought, it was the select_tag, as it doesnt have u attached, as text_field does

<%= form_for @user do |u| %>
                    <%= render 'shared/error_messages' %>
                        <p><%= u.label :size, 'How many employees do you have?' %>: </p>
                        <p><%= select_tag :size, options_from_collection_for_select(@plan, 'name', 'size') %></p>

                        <p><%= u.label :email, 'What\'s your email address?' %>:</p>
                        <p><%= u.text_field :email %></p>
                        <%= u.submit%>
                    <% end %>

But when I tried u.select_tag = Error, undefined method.

My model

  class User < ActiveRecord::Base
attr_accessible :size, :email
end

Any thoughts?


You need to have the "size" param nested inside of the "users" hash. When you look in the log you want to verify seeing something like this:

"user"=>{"email"=>"5@gmail.com", "size"=>"small"}

To achieve that inside of of your form for, you can keep your existing select_tag and scope it as such:

<%= select_tag 'user[size]', options_from_collection_for_select(@plan, 'name', 'size') %>

Or you for this case it looks like you could use collection_select scoped on the form object:

<%= u.collection_select :size, @plan, :name, :size %>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜