在每个新行中保存数组值

时间:2013-06-01 13:04:01

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

我已经尝试了一段时间,我认为我弄错了。

我使用的表单是带有fields_for的嵌套表单,我想要的是将rails select函数中的每个数组值保存到db中的新行中。

我已经在我的blackwhite.rb模型中序列化了:newpages。

     <% forms_for @prints do |f| %>
      ...
      ...

        <%= f.fields_for :blackwhites_attributes do |blackwhite| %>
        <%= blackwhite.select :newpages , options_for_select((1..(@print.number_of_images_entry.to_i)).to_a), :multiple => true, :size => @print.number_of_images_entry.to_i %>
        <% end %>

     <% end %>

编辑1:

它有“多个”,因为我想对页面进行多次选择。

blackwhite.rb型号:

class Blackwhite < ActiveRecord::Base

      attr_accessible :print_id

      serialize :newpages
      belongs_to :print

    end

print.rb model:

class Print < ActiveRecord::Base
  has_many :blackwhites
  belongs_to :user

  accepts_nested_attributes_for :blackwhites, :allow_destroy => true

 ...
 ...
end

更新2:

我观看过railscast并修改了我的嵌套表单,如下所示:

  <%= f.fields_for :blackwhites do |blackwhite| %>
       <% render 'blackwhites', f: blackwhite %>
    <% end %>
部分_blackwhites.html.erb中的

   <%= f.select :newpages , (1..(@print.number_of_images_entry)), { :prompt => "0" }, :multiple => true, :size => @print.number_of_images_entry ) %>

我的选择字段不再显示。

1 个答案:

答案 0 :(得分:1)

您的渲染未打印,因为您忘记了等号。

<%= render 'blackwhites', f: blackwhite %>