【发布时间】:2018-03-05 20:12:05
【问题描述】:
我有一个“杜松子酒”模型,它允许“酿酒厂”模型中的“名称”嵌套属性。嵌套形式运行良好,但我意识到我正在创建“重复”的酿酒厂条目。 'find_or_create_by' 似乎应该防止这种情况发生,但我无法让它不创建副本。
由于这是一个嵌套表单,我也不确定应该放置哪个控制器。
这就是我目前所拥有的,如前所述,这会继续为酿酒厂创造多条记录。我没有任何错误。
gins_controller.rb
class GinsController < ApplicationController
...
def new
@gin = Gin.new
@gin.build_distillery
end
distillery_controller.rb
class DistilleriesController < ApplicationController
...
def new
@distillery = Distillery.find_or_create_by(name: 'name')
end
gins_form
<%= form.fields_for :distillery do |distillery_form| %>
<p>
<%= distillery_form.label :distillery, class: "block text-grey-darker text-sm font-bold mb-2" %>
<%= distillery_form.text_field :name, class:"lg:w-2/5 w-full shadow appearance-none border rounded py-2 px-3 mb-6 text-grey-darker" %>
</p>
<% end %>
更新
已将其移至 gins_controller 但无法解决:
def new
@gin = Gin.new
@gin.build_distillery
@distillery = Distillery.find_or_create_by(name: 'name')
end
【问题讨论】:
-
可以添加 gins_form 吗?
-
杜松子酒表格添加@Tobias
-
如果您将酒厂作为
Gin的一部分提交,那么您需要在GinsController中填写find_or_create_by,而不是DistilleryController。此外,在DistilleryController中,您不应该在new操作中创建酿酒厂,这就是new呈现的形式。 -
谢谢,@dinjas。我已将其移至 gins 控制器中,但不幸的是,我仍在创建重复项。
-
@SimonCooper 您的 GinsController 中的
create操作是什么样的?
标签: ruby-on-rails nested-forms