1

我的问题如下:

我有两个模型:产品和品牌。当前在产品表单中,用户能够(通过选择列表)为其产品选择品牌。但是,如果该品牌不存在,他可以通过单击重定向到品牌/新表单的链接来创建一个新品牌。

有没有办法直接在产品配方中处理缺失的品牌创建?

我希望我足够清楚。

感谢您的回答。

4

2 回答 2

1

在表单本身中,您可以允许用户从下拉列表中选择品牌在文本字段中输入新品牌的名称。我会使用收音机来强制用户执行这两个操作之一,而不是两者都执行。这些<option>元素的值对应于品牌名称而不是品牌 ID。

然后,在 Rails 方面,您可以使用find_or_create_by_name,假设您的品牌名称是唯一的:

# assuming a params structure like params[:product][:brand_name]
class Product < ActiveRecord::Base
  def brand_name=(name)
    self.brand = Brand.find_or_create_by_name(name)
  end
end

控制器仍然会简单地做这样的事情:

@product = Product.new(params[:product])
于 2012-11-28T17:19:56.493 回答
0

我个人会使用 jQuery 来做类似的事情。让用户从选择列表中选择“新品牌”之类的内容,然后显示输入提示。使用 AJAX 创建新品牌,然后在表单中重新创建品牌列表,并选择新品牌。

于 2012-11-28T17:24:57.763 回答