2
一個question
的has_many kpi
:表格一的has_many:通過與附加的屬性關係通過<code>kpiquestions</code>連接表
class Question < ActiveRecord::Base
has_many :kpiquestions, dependent: :destroy
has_many :kpis, through: :kpiquestions
end
class Kpi < ActiveRecord::Base
has_many :kpiquestions, dependent: :destroy
has_many :questions, through: :kpiquestions
end
class Kpiquestion < ActiveRecord::Base
belongs_to :kpi
belongs_to :question
end
現在我有一個工作question
形式,我可以使用複選框添加的KPI:
= form_for @question do |f|
= render "layouts/form_messages", target: @question
.form-group
= f.label "Name"
= f.text_field :name
.form-group
= f.label "KPI's"
%ul
= hidden_field_tag "question[kpi_ids][]", nil
- @kpis.each do |kpi|
%li.checkbox
= check_box_tag "question[kpi_ids][]", kpi.id, @question.kpi_ids.include?(kpi.id), "data-category" => kpi.id
= kpi.name
.form-group
= f.submit(class: 'btn btn-default', value: "Save")
但連接表kpiquestion
有一個附加屬性weight
。該屬性也應該添加到表單中,並使用text_field_tag
。事情是這樣的:
= text_field_tag "question[kpi_ids][:weight]", kpi.weight, @question.kpi_ids.include?(kpi.id), "data-category" => kpi.weight
顯然,這是不行的,因爲它現在返回一個錯誤說kpi
沒有叫weight
屬性。那麼如何將這個屬性添加到表單中?
你應該看看[fields_for(http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for)方法。 –
[Rails嵌套窗體與has \ _many:through,如何編輯連接模型的屬性?]的可能重複(http://stackoverflow.com/questions/2182428/rails-nested-form-with-has-many-through - 如何對編輯的屬性-的聯接模型) – Marcus