0

私の RoR プロジェクトには、scope と project_scopes というモデルがあります。

プロジェクトhas_many :scopes, through: :project_scopes。また、プロジェクトaccepts_nested_attributes_for :project_scopes

いくつかの選択によってプロジェクトにスコープを追加します。

プロジェクト/_form.html.haml

= form_for(@project) do |f|
  = f.fields_for :project_scopes do |builder|
    = render 'project_scope_fields', f: builder
  = link_to_add_fields 'Add scopes', f, :project_scopes

プロジェクト/project_scope_fields.html.haml

= f.select :scope_id, options_from_collection_for_select(@scopes, "id", "name"), {include_blank: true, class: "project_scopes"}
= f.hidden_field :_destroy

これにより、すべてのスコープでプロジェクトが正常に作成されます。編集をクリックすると、同じフォームがレンダリングされ、すべてのスコープ選択が表示されますが、選択された値が正しくありません。

これを修正するにはどうすればよいですか?

4

2 に答える 2

4

options_from_collection_for_selectのドキュメントを参照してください:4つのパラメーターを取り、最後の1つが選択されたオプションです。あなたはそれを供給していません。これを試して:

= f.select :scope_id, options_from_collection_for_select(@scopes, "id", "name", @project.scope)

または、collection_selectヘルパーを使用します。

= f.collection_select(:scope_id, @scopes, :id, :name)
于 2012-08-20T08:08:23.040 に答える
1

次のことを試してください(そして、私はあなたがattr_accessible正しく設定していると思います):

= f.select :scope_id, @scopes.map{|s| [s.name, s.id]}, {include_blank: true, class: "project_scopes"}

ところで-Scope最高のモデル名ではないかもしれません。

于 2012-08-26T22:39:11.437 に答える