1

次のように定義された多対多の関係があるとします。

私のユーザーモデルでは:

class User < ActiveRecord::Base
 attr_accessible :userName (...) 
 has_and_belongs_to_many :groups
end

私のグループモデルでは:

class Group < ActiveRecord::Base
  attr_accessible :groupName (...)
  has_and_belongs_to_many :users
end

更新と作成でユーザーコントローラーに追加しました:

@user.group_ids = Group.find(params[:group_ids]) if params[:group_ids]

ユーザーフォームには、各ユーザーのグループを選択するための複数選択リストが含まれています(実際に機能する他の基準の中でも):

<%= select_tag("group_ids[]", options_for_select(Group.find(:all).collect { |gro| [gro.groupName, gro.id] }, @user.groups.collect { |gro| gro.id}), {:multiple=>true, :size=>15}) %>

ユーザーを作成または更新すると、すべてが正常に機能しているように見えますが、選択リストでどのような選択をしても、間違ったグループ (常に id=1 のグループ) がユーザーに追加されます。データベースを試してhas_many_through移行しましたが、問題もありました。

割り当てを実現する方法を知っていますか?

4

1 に答える 1

0

select タグの代わりに、f.select フォーム ヘルパーを使用できます。詳しくは、Rails 3: 関連付けによる has_many を使用した複数選択

また、次のように完全に機能する両面マルチ選択があります: Rails 3 で動作する両面マルチ選択

http://loudev.com/のものをお勧めします。使用する必要があるのは次のとおりです。

<%= f.select(:country, "country_id", Country.all.collect {|c| [ c.name, c.id ] }, {:include_blank => false}, {:class => "multiselect", :multiple => "multiple"}) %>

ビューに次の Javascript を追加します。

<script>
$(document).ready(function (){
     $('.multiselect').multiSelect(); 
});
</script>
于 2013-01-05T04:45:26.817 に答える