问题描述
|
我有一个
Product
模型,下表具有ProductsController
和Form:
class CreateProducts < ActiveRecord::Migration
def self.up
create_table :products do |t|
t.string :name
t.decimal :price
t.string :location
end
如何在我的表单上再次六次生成name
和price
,以在数据库中制作六种产品(六种就是我刚刚扔出的数字)?
编辑:添加了ѭ5来对我正在尝试做的事情进行更多的解释。
仅在一种表单上,用户可以创建产品,并可以选择制造任意数量的产品(:name
和:price
),并且在提交表单时,所有人都具有相同的:location
。这基本上是一种进行嵌套模型的方法,但是仅使用一个表(包括Railscast Ajax,我将其放在自己身上)。
解决方法
Rails支持输入数组。像产品[]这样的东西可以提交给控制器
否则,您将在提交带有相同名称和ID的输入的表单时遇到问题。您可以将所有输入捆绑到一个Javascript数组中,然后通过POST提交。
如果您使用的是jQuery,则可以这样命名所有产品名称输入:
<input class=\"product_name\" type=\"text\">
<input class=\"product_name\" type=\"text\">
<input class=\"product_name\" type=\"text\">
做类似的事情
var products_array = [];
$(\".products\").each(function() {
products_array.push($(this).val());
});
出于好奇,为什么要在一页上输入多个产品?这就像发票类型的东西吗?
, 本Railscast讨论了多行表单创建技术。