未保存两个表单值

时间:2011-05-17 22:22:43

标签: ruby-on-rails ruby ruby-on-rails-3 forms devise

我有这个注册用于设计:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>

  <p><%= f.label :email %><br />
  <%= f.email_field :email %></p>

  <p><%= f.label :password %><br />
  <%= f.password_field :password %></p>

  <p><%= f.label :password_confirmation %><br />
  <%= f.password_field :password_confirmation %></p>

  <%= f.fields_for :profile, resource.build_profile do |t| %>
     <div class ="field">
        <%= t.label :type, "Are you an artist or listener?" %><br />
        <div>Artist: <%= t.radio_button :type, "Profile::Artist", :id => "artist_button" %></div>
        <div>Listener: <%= t.radio_button :type, "Profile::Listener", :id => "listener_button" %></div>
      </div>
  <% end %>

  <p class="before"><%= f.submit "Sign up", :id => "new_user_submit" %></p>
<% end %>

然后我有一些动态插入字段的JQuery:

$("#artist_button").click(function() {
        if ($('input#user_name').parent().hasClass('field')){
            $('input#user_name').parent().remove();
        }
        $(".before").before('<div class="field"><label for="user_name">Artist or Band/Group Name</label><br><input id="user_name" name="user[name]" size="30" type="text"></div>');
    }); 

但是,嵌套在用户表单中的type属性和动态插入的name属性不会保存到数据库中。这些值输入为null。

这是为什么?我该如何解决这个问题?

更新:

name属性不是attr_accessible,这导致它不会保存到db。但是,嵌套在用户表单中的type属性为attr_accessible,但仍未保存到db。

4 个答案:

答案 0 :(得分:1)

“type”是用于单表继承的“魔术”ActiveRecord列名,这意味着您刚刚受到约定配置的影响。您需要将“类型”列重命名为其他内容 - 我通常使用“kind”作为列名。

答案 1 :(得分:0)

type是关联吗?如果是这样,您也必须将:type_id添加到attr_accessible

答案 2 :(得分:0)

你添加了

吗?
accepts_nested_attributes_for :profile 
用户模型中的

答案 3 :(得分:0)

尝试加入您的用户模型:

attr_accessible :profiles_attributes

与其他设计attr_accessible(email,remeber_me,etc)一起,不要删除你拥有的东西!