Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带有复选框的简单字段错误_Ruby On Rails_Fields For - Fatal编程技术网

Ruby on rails 带有复选框的简单字段错误

Ruby on rails 带有复选框的简单字段错误,ruby-on-rails,fields-for,Ruby On Rails,Fields For,晚安,朋友们 在一个多到的表单中,我需要显示给定类(工具)的所有对象,旁边有一个复选框字段和文本字段。我的表格如下: = simple_form_for @service, html: { class: 'form-horizontal' } do |f| - @tools.each do |tool| = f.simple_fields_for :instrumentalisations, tool do |i| = i.input :tool_id, to

晚安,朋友们

在一个多到的表单中,我需要显示给定类(工具)的所有对象,旁边有一个复选框字段和文本字段。我的表格如下:

= simple_form_for @service, html: { class: 'form-horizontal' } do |f|
   - @tools.each do |tool|
      = f.simple_fields_for :instrumentalisations, tool do |i|
         = i.input :tool_id, tool.id, as: :check_boxes
         = i.input :amount
但我得到了以下错误:

 Undefined method `tool_id 'for # <Tool: 0x007faef0327c28> 
 Did you mean To_gid

谢谢大家!

错误很简单:工具没有
工具id
方法。但是,为什么要将此请求发送给工具对象而不是工具化对象

因此,您试图创建一些
工具化
,但您将
工具作为对象传递:

f.simple_fields_for :instrumentalisations, **tool** do |i|
需要一个
记录\u名称
,在本例中是
:指令化
,第二个参数是
记录\u对象
,它应该是
指令化
对象而不是
工具
对象

因此,要修复它,必须传递一个
工具化
对象。您可以通过以下方式实现这一点:

f.simple_fields_for :instrumentalisations, Instrumentalisation.new(tool: tool) do |i|
当然,这不是最好的解决方案,因为如果编辑此对象,将构建大量新的
工具化


我建议使用,这样更容易处理嵌套表单

事实上,这个字段:tool_id是一个外键会干扰某些东西?我注意到,当我从
=f.simple_fields\u for:instrumentalizations,tool do | I |
更改为
=f.simple_fields\u for:instrumentalizations do | I |
时,它向我介绍了几个工具对象,实际上似乎是重复的,那不是我所需要的。我想显示tools类的所有对象,用一个复选框字段来标记它们,另一个文本字段来追加项目的数量。那样的话,茧宝石解决不了我的问题,显示的内容与我要查找的内容尽可能接近,但是我需要再添加一个字段并使用。错误是您将工具对象传递到Instrumentalizations循环中。使用字段_传递一个新的工具化只是归档您尝试执行的操作的方法之一。
f.simple_fields_for :instrumentalisations, **tool** do |i|
f.simple_fields_for :instrumentalisations, Instrumentalisation.new(tool: tool) do |i|