我有一個Profile
模型,即accepts_nested_attributes_for :grades
。如何處理simple_form中的嵌套關聯中的選定值?
我Grade
模式是這樣的:
# == Schema Information
#
# Table name: grades
#
# id :integer not null, primary key
# subject :string
# result :string
# grade_type :integer
# profile_id :integer
# created_at :datetime not null
# updated_at :datetime not null
class Grade < ActiveRecord::Base
belongs_to :profile
enum grade_type: { csec: 0, cape: 1, sat: 2, g7: 3, g8: 4, g9: 5, g10: 6, g11: 7, g12: 8, g13: 9 }
end
在我profiles/_form.html.erb
,我有以下幾點:
<%= simple_form_for @profile, html: { class: "form-horizontal" } do |f| %>
<%= f.simple_fields_for :grades, html: { class: "form-inline" } do |g| %>
<%= g.input_field :grade_type, collection: Grade.grade_types.keys, include_blank: false, class: 'col-lg-8 form-control' %>
<% end %>
<% end %>
所以,這表明我從枚舉值grade_types
像我期望的那樣。
但是我想要發生的是,當我編輯一條記錄時,它顯示了等級,它應該有預先選擇的grade_type。
我該怎麼做?
您是否在控制器中將「grade_types」參數列入白名單? 'require(:profile).permit(grades_attributes:[:grade_type])' – max
@max是的。這不是問題。問題在於檢測已選擇的內容並識別它。 – marcamillion
嗯試試'集合:User.statuses.map {| k,v | [k,k]} - SimpleForm將'ActionView :: Helpers :: FormOptionsHelper'委託給它,並且它可能會將'g.object.grade_type'鏈接到這些選項。 – max