【问题标题】:formtastic can't convert symbol to integerformtastic 无法将符号转换为整数
【发布时间】:2011-08-30 18:57:09
【问题描述】:

我有一个使用 formtastic 的相当简单的嵌套表单。

我的模特是

类 FieldMap

视图是

@base_fields %> @master_fields %> @actions, :required=> false, :input_html=>{:class=>'split_merge_type', :name=>"field_map[merge_splits_attributes][action]"} % > false, :input_html=>{:class=>'split_merge_char', :name=>"field_map[merge_splits_attributes][character]"} %> [0,1], :include_blank=>false, :required=> false, :input_html=>{:class=>'split_merge_count', :name=>"field_map [merge_splits_attributes][count]"} %>

当我提交表单时,参数是

{"utf8"=>"?", "authenticity_token"=>"lNinAw4DpjkIHsuUEaa0xo+sRG+qk3elA4T2VfCWgXc=", "field_map"=>{"base_field_id"=>"18", "master_field_id"=>"11", "merge_splits_attributes"=>{"action"=>"0", “字符”=>“ti”, “计数”=>“0”}, "attribute_map_attributes"=>{"attribute_id"=>""}}, "commit"=>"创建字段映射"}

返回一个无法将符号转换为整数的错误。 不幸的是,它没有告诉我它试图转换什么。

【问题讨论】:

  • 我添加了视图,我假设您的意思是表单的视图,因为错误来自“创建”。

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


【解决方案1】:

替换:

<%= 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

【讨论】:

  • 应该是正确的,但是当我将 :merge_split 替换为 :merge_splits 时,merge_splits 的字段根本不显示。由于某种原因,如果多个语义字段与模型中的多个关系匹配,则不会显示表单。我不确定为什么会这样,但这就是我指定 :name 的原因。有什么建议吗?
  • 有没有关联的merge_splits?我的意思是,当你创建你的对象时,你也应该建立它的关系,否则它们就不会出现。
  • 抱歉,我现在真的迷路了。你的意思是我在模型中创建了关联?如果是的话,是的。
猜你喜欢
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多