0

ネストされたオブジェクト フォームを実行しようとしています。ページはエラーなしで読み込まれますが、送信すると組織モデルに情報が保存されません。

SQL呼び出しはこれを言います..

Parameters: {"commit" => "save", "action"=>"update","_method"=>"put",  "organization"=>{"likes_snacks"=>"0"}, ..

どちらが正しいです。チェックボックスのオンとオフを切り替えることで、1 と 0 を適切に変更できます。しかし、その情報はデータベースに保存されていないと思います。何か案は?

ハムル:

- form_for @user do |f|
  = f.label :username
  = f.text_field :username
.clear
  - fields_for :organization do |org| unless @user.organizations.empty?
    = org.label :likes_snacks, 'Like snacks?'
    = org.check_box :likes_snacks
= f.submit 'save', {class => 'button'}

コントローラ:

def edit
  @user = current_user
  @organization = current_user.organizations.first
end

モデル:

組織.RB:

has_many  :users, :through => :organizations_users

ユーザー.RB:

has_many  :organizations, :through => :organizations_users
4

3 に答える 3

2

親属性は保存できますが、子属性は保存できないようです。

ネストされたフォームから子属性にアクセスできるようにするには、親クラスの attr_accessible メソッドに「#{child_class_name}_attributes」を追加する必要があります (attr_accessible親モデルで使用する場合のみ) 。

したがって、親モデルは次のようになります。

class User < ActiveRecord::Base
  attr_accessible :username, :organizations_attributes
  accepts_nested_attributes_for :organizations
end

attr_accessibleまた、親モデルで使用しない場合、これは必要ありません。

于 2010-07-19T17:27:53.260 に答える
1

ここで興味深いのは、リンカー テーブル :organization_users です。

これに関する受け入れられた答えなので、質問はあなたが必要だと言っています

form_for @user do |f|
  f.fields_for :organization_users do |ff|
    ff.fields_for :organization
于 2010-07-19T18:08:13.380 に答える