ruby-on-rails – 使用simple_form和rails创建多个嵌套表单4

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 使用simple_form和rails创建多个嵌套表单4前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图用以下型号创建一个简单的应用程序:
类别 – [has_many] – >问题 – [has_many] – >答案

我有以下代码来创建类别问题(categories / _form.haml.html):

= simple_form_for(@category) do |f|
  = f.error_notification
  = f.input :title,label: "Category title: "
  = f.simple_fields_for :questions,@category.questions.build do |q|
    = q.input :content,label: "Question content: "
  = f.button :submit

我正在使用所有相同的代码来创建问题的答案(questions / _form.haml.html).我拥有所有的关系,强大的参数,嵌套的attrs和控制器配置,它对我来说很好.

两个问题:

>如何在类别/ _form.haml.html中创建多个问题?
>如何一次创建每个问题的类别多个问题多个答案(类别/ _form.haml.html)?

我花了几个小时试图找出如何完成第二个,所有的信息,我能够找到与Rails 3.0和form_for有关.他们都没有为我工作.

这里最直接的解决方案应该是:

= simple_form_for(@category) do |f|
  = f.error_notification
  = f.input :title,label: "Question content: "
    = q.simple_fields_for :answers,q.questions.build do |a|
      = a.input :content,label: "Answer content"
  = f.button :submit

但它给了我

undefined method `questions' for #<SimpleForm::FormBuilder:

我在这里缺少什么?

解决方法

你错了这里:= q.simple_fields_for:answers,q.questions.build do | a |
您正在调用构建器对象q的问题方法,而不是模型对象.
大概你想要这个:
= q.simple_fields_for :answers,q.object.questions.build

猜你在找的Ruby相关文章