0

私は、車両の詳細、苦情の詳細、およびユーザーの詳細を含む単一のフォームを持っています。車両には_多くの苦情があり、ユーザーには_多くの苦情があります.ネストされた_属性フォームですが、何らかの理由で関連付けが間違っていると感じ、フォームがどうあるべきか少し混乱しています苦情 has_one vehicle と苦情 has_one user?? そして、苦情を作成するときに新しいユーザーと新しい車両を作成しています。このフォームには認証がありません..

ビークル.rb

 class Vehicle < ActiveRecord::Base
   attr_accessible :number, :vehicle_types , :complaints_attributes
   has_many :complaints
   accepts_nested_attributes_for :complaints
 end

ユーザー.rb

 class User < ActiveRecord::Base
  attr_accessible :address, :email_id, :mobile , :complaints_attributes
  has_many :complaints
  accepts_nested_attributes_for :complaints
 end

苦情.rb

class Complaint < ActiveRecord::Base
  attr_accessible  :indecent_behaviour, :occurence_date_time, :other_complaints,      :place_occurence
  belongs_to :user
  belongs_to :vehicle 
end

ありがとう

4

1 に答える 1

0

ユーザーと車両が苦情を入れ子にした理由が私には理解できません。おそらく、新しいユーザーと新しい車両を作成すると同時に、苦情を作成していません。あなたは?

おそらく、ユーザーが作成され、車両が作成され、次にユーザーが車両について苦情を言い、その時点で苦情が発生します。ユーザーまたは車両が作成されたときよりも時系列的に新しい。

したがって、ネストされた属性を削除してください。代わりに、隠しフィールドを使用して車両 ID をパラメーターとして渡すか、ネストされたリソース ルートを使用して vehicle_id を取得できます。苦情を申し立てている current_user の has_many アソシエーションを介して苦情を作成します。

new_complaint_path( vehicle_id: @vehicle.id )

苦情管理者で

def new
  @complaint = current_user.complaints.build
  @complaint[:vehicle_id] = params[:vehicle_id]
end
于 2013-04-23T07:25:16.303 に答える