Rails nested_form 里面 nested_form
Rails nested_form inside 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)
总体来说是这样的格式。它有更多的东西,但为了不包含太多不必要的信息,我省略了表单的一些字段。
但是我得到以下错误
Completed 500 Internal Server Error in 690ms (ActiveRecord: 6.1ms)
SyntaxError - syntax error, unexpected keyword_do_block ;
_slim_controls2 = request.fields_for :new_category_rate, do |u|;
^ /project/app/views/new_rates/_category_rate_requests.html.slim:61:
syntax error, unexpected keyword_ensure, expecting end-of-input:
红色标记的那一行是:
= request.fields_for :new_category_rate, do |u|
有什么办法可以将所有三个模型的属性集中在一种形式中吗?更准确地说是 Rate
形式。
我不知道您是否出于特定原因需要使用那个 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_association
和 link_to_remove_association
。
(从评论中复制)
错误行中多了一个逗号。将其更改为:
= request.fields_for :new_category_rate do |u|
我有以下模型和关系:
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)
总体来说是这样的格式。它有更多的东西,但为了不包含太多不必要的信息,我省略了表单的一些字段。
但是我得到以下错误
Completed 500 Internal Server Error in 690ms (ActiveRecord: 6.1ms)
SyntaxError - syntax error, unexpected keyword_do_block ; _slim_controls2 = request.fields_for :new_category_rate, do |u|; ^ /project/app/views/new_rates/_category_rate_requests.html.slim:61: syntax error, unexpected keyword_ensure, expecting end-of-input:
红色标记的那一行是:
= request.fields_for :new_category_rate, do |u|
有什么办法可以将所有三个模型的属性集中在一种形式中吗?更准确地说是 Rate
形式。
我不知道您是否出于特定原因需要使用那个 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_association
和 link_to_remove_association
。
(从评论中复制)
错误行中多了一个逗号。将其更改为:
= request.fields_for :new_category_rate do |u|