在nested_form中的Rails nested_form

我有以下模型和关系:

Rate fields t.string :type t.string :name class Rate < ActiveRecord::Base has_many :category_rate_requests end CategoryRateRequests fields t.date :date_from t.date :date_to class CategoryRateRequests < ActiveRecord::Base belongs_to :rate has_many :category_rates end CategoryRate t.integer :room_category_id t.integer :new_rate_id t.integer :category_rate_request_id t.integer :amount class CategoryRate < ActiveRecord::Base belongs_to :rate belongs_to :category_rate_request belongs_to :room_category end 

我试图在nested_form中有一个nested_form

 = nested_form_for @rate do |f| = label_tag :name, t('rates.new.name'), class: 'grey h2' = f.text_field(:name, required: true, class: 'form-input form-control full-width-input') = f.fields_for :category_rate_request do |request| = request.text_field(:date_from, class: 'date-input form-control start-date-input', type: 'text', 'data-provide': 'datepicker', placeholder: t('common.date_from')) = request.text_field(:date_to, class: 'date-input form-control end-date-input', type: 'text', 'data-provide': 'datepicker', placeholder: t('common.date_to')) = request.fields_for :category_rate, do |u| = u.number_field(:price, class: "form-control", placeholder: placeholder) 

总的来说这是格式。 它有更多的东西,但是为了不包含太多不必要的信息,我省略了表格的一些字段。

但是我收到以下错误

在690ms内完成500内部服务器错误(ActiveRecord:6.1ms)

SyntaxError – 语法错误,意外的keyword_do_block; _slim_controls2 = request.fields_for:new_category_rate,do | u |; ^ /project/app/views/new_rates/_category_rate_requests.html.slim:61:语法错误,意外的keyword_ensure,期待输入结束:

标有红色的那条线是:

= request.fields_for :new_category_rate, do |u|

有什么方法可以在一种forms中拥有所有三种模型的属性吗? 在Rateforms更准确。

(从评论中复制)

您在错误行中有一个额外的逗号。 将其更改为:

 = request.fields_for :new_category_rate do |u| 

我不知道你是否需要使用那个gem出于特殊原因,但我认为它使用它的时间太长了。

我使用Cocoon ,只需要简单的表格:

 simple_form_for @a do |f| f.simple_fields_for :b do |b_f| b_f.simple_fields_for :c do |c_f| ... end end end 

您也可以非常友好地使用link_to_add_associationlink_to_remove_association