formtastic не может преобразовать символ в целое число - PullRequest
0 голосов
/ 23 мая 2011

У меня довольно простая вложенная форма с использованием formtastic.

Мои модели

class FieldMap < ActiveRecord::Base

  has_many :merge_splits
  accepts_nested_attributes_for :merge_splits

class MergeSplit < ActiveRecord::Base

    belongs_to :field_map

end

просмотр

<%= semantic_form_for @field_map do |f| %>

    <%= f.input :base_field, :collection => @base_fields %>
    <%= f.input :master_field, :collection =>@master_fields %>

        <%= f.semantic_fields_for :merge_split do |ms| %>
        <%= ms.input :action, :collection => @actions, :required=> false, :input_html=>{:class=>'split_merge_type', :name=>"field_map[merge_splits_attributes][action]"} %>
        <%= ms.input :character, :required=> false, :input_html=>{:class=>'split_merge_char', :name=>"field_map[merge_splits_attributes][character]"} %>
        <%= ms.input :count, :collection => [0,1], :include_blank=>false, :required=> false, :input_html=>{:class=>'split_merge_count', :name=>"field_map[merge_splits_attributes][count]"} %>
    <% end %>


    <%= f.submit %>
<% end %>

Когда я отправляю свою форму, параметры

{"utf8"=>"?",
 "authenticity_token"=>"lNinAw4DpjkIHsuUEaa0xo+sRG+qk3elA4T2VfCWgXc=",
 "field_map"=>{"base_field_id"=>"18",
 "master_field_id"=>"11",
 "merge_splits_attributes"=>{"action"=>"0",
 "character"=>"ti",
 "count"=>"0"},
 "attribute_map_attributes"=>{"attribute_id"=>""}},
 "commit"=>"Create Field map"}

, который возвращает не может преобразовать символ в целочисленную ошибку. К сожалению, это не говорит мне, что он пытается конвертировать.

1 Ответ

1 голос
/ 23 мая 2011

Заменить:

<%= f.semantic_fields_for :merge_split do |ms| %>

На:

<%= f.semantic_fields_for :merge_splits do |ms| %>

Просто к вашему сведению, я был уверен, что здесь лежит ошибка из-за структуры ваших параметров:

"merge_splits_attributes"=>{"action"=>"0", "character"=>"ti", "count"=>"0"}

В отношениях has_many вложенные атрибуты выглядят так:

"merge_splits_attributes"=>{"0" => {"action"=>"0", "character"=>"ti", "count"=>"0" }, "1" => {"action"=>"0", "character"=>"ti", "count"=>"0" } }

РЕДАКТИРОВАТЬ

В вашем контроллере, я полагаю, вы делаете:

@field_map = FieldMap.new

Та же логика, у вас должно быть следующее для создания merge_split:

@field_map = FieldMap.new
@field_map.merge_splits.build

И удалите :name

...