1

プログラミング言語の従業員の経験を表現する 3 つのモデルがあるとします。Language はマスター テーブルであり、従業員は編集できませんが、管理者ユーザーのみが操作できます。

class Employee
  has_many :experiences
  has_many :languages, through: :experiences
end

class Language
  has_many :experiences
  has_many :employees, through: :experiences

end

class Experience
  belongs_to :employee
  belongs_to :language

  attr_accessible :employee_id, :language_id, :duration
end

フォームでエクスペリエンスの属性期間を編集し、関連付け自体を行うためのチェックボックスと、エクスペリエンスの入力を編集できるようにしたいと考えています。

編集済み

動的にネストされた属性ソリューションは必要ありませんが、このようなものは、すべての関連付けの選択肢をドロップダウンではなくチェックボックス形式で表示したいということです。

ここに画像の説明を入力

これが通常から逸脱していることはわかっていますが、それを必要とする UI の制約があります。

4

1 に答える 1

0

ネストされたモデルを使用することをお勧めします。たとえば、従業員情報を編集している場合は、経験 (言語と期間) を追加できます。

これらのRailsCastをチェックしてくださいhttp://railscasts.com/episodes?utf8=%E2%9C%93&search=nested+model

Employee モデルを編集して、ネストされたモデル (この場合はエクスペリエンス) を受け入れることができるようにする必要があります。また、エクスペリエンスの属性の一括割り当てを許可する必要があります。こちらです:

従業員

attr_accessible :experiences_attributes
accepts_nested_attributes_for :experiences, allow_destroy: true 

ビューの場合:

フォーム:

<%= simple_form_for @employee do |f| %>    
  <%= f.input :name %>

  <hr />

  <h3>Experience</h3>

  <%= f.simple_fields_for :experiences do |pf| %>
     <%= render 'experience_fields', f: pf %>
  <% end %>

  <%= link_to_add_fields "New employee experience", f, :experience %>

  <hr />

  <div>
    <%= f.button :submit %>
  </div>
<% end %>

部分的な経験フィールド

<fieldset>
    <%= f.association :language %>
    <%= f.input :duration %>

    <%= f.hidden_field :_destroy %>
    <%= link_to "Remove", '#', class: "remove_fields" %>
</fieldset>

RailsCasts、特にhttp://railscasts.com/episodes/196-nested-model-form-part-1http://railscasts.com/episodes/197-nested-model-form-part-2を確認し、プレミアム アカウントをお持ちの場合は、http://railscasts.com/episodes/196-nested-model-form-revisedを確認してください

ビデオで説明されている Javascript 関数とヘルパーを忘れずに追加してください。

また、これを見てください: https://github.com/nathanvda/cocoon/wiki/A-guide-to-doing-nested-model-forms

于 2013-04-12T15:19:44.073 に答える