Ruby on rails 在一个表单中创建多个非子记录
我有一个表单,我需要用户能够创建许多记录,但与标准gem的不同之处在于我没有创建子记录。以一项调查为例: 提问者创建一个Ruby on rails 在一个表单中创建多个非子记录,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个表单,我需要用户能够创建许多记录,但与标准gem的不同之处在于我没有创建子记录。以一项调查为例: 提问者创建一个调查,其中有许多嵌套的调查问题,每个问题都有一些调查选项。然后,回答者转到调查和swer.new回答其中一些问题 我需要能够一次性创建多个调查和回答。由于这造成了多个“父母”而不是多个“孩子”,这似乎是一个不典型的问题。我怎样才能让它工作 更新-问题不仅仅属于调查 我上面写的描述可能有误导性——只考虑问题>代码>,用户可以创建回答< /代码>。一些问题被捆绑在调查中,但许多问
调查
,其中有许多嵌套的调查问题
,每个问题都有一些调查选项
。然后,回答者转到调查和swer.new
回答其中一些问题
我需要能够一次性创建多个调查和回答。由于这造成了多个“父母”而不是多个“孩子”,这似乎是一个不典型的问题。我怎样才能让它工作
更新-问题不仅仅属于调查
<>我上面写的描述可能有误导性——只考虑<代码>问题>代码>,用户可以创建<代码>回答< /代码>。一些问题被捆绑在调查中,但许多问题是自由浮动的。这就是为什么我认为将答案捆绑在除创建答案的用户之外的任何内容下是没有意义的。更新:因为范围界定不是一个选项-这里有一个解决方案应该有效:
控制器:
def new
@questions = []
(1..10).each do
@questions << Question.new
end
end
def create
logger.info params[:questions].inspect
end
def新建
@问题=[]
每个人都有
@问题
这将创建一个包含多个子项的表单,其外观类似于:
<input id="questions_1_text" name="questions[1][text]" size="30" type="text" />
<input id="questions_2_text" name="questions[2][text]" size="30" type="text" />
参数散列如下所示:
“问题”=>{“1”=>{“文本”=>“foo”},“2”=>{“文本”=>“条”},
“3”=>{“文本”=>“任何”},“4”=>{“文本”=>“去”},“5”=>{“文本”=>“这里”},
“6”=>{“文本”=>”},“7”=>{“文本”=>”},“8”=>{“文本”=>”},
“9”=>{“文本”=>“”},“10”=>{“文本”=>“”},“提交”=>“测试”}
正如您所看到的,您只需通过params[:questions]在控制器中访问此哈希。
您可以遍历它们,检查它们是否为空,并将它们持久保存到ActiveRecord
希望这能有所帮助。我已经澄清了我的问题。谢谢你迄今为止的回答。
<input id="questions_1_text" name="questions[1][text]" size="30" type="text" />
<input id="questions_2_text" name="questions[2][text]" size="30" type="text" />