2013-04-23 2 views
0

У меня есть одна форма, где у меня есть сведения о машине, детали жалоб и подробные сведения о пользователе. В любом случае у автомобиля есть жалобы на жалобы и жалобы пользователя. Есть форма вложенных_трибутов, но по какой-то причине я чувствую, что ассоциация неправильная и im немного путают, как должна быть форма Или это должна быть жалоба has_one автомобиль и жалоба has_one пользователь ?? И им создание нового пользователя и новый автомобиль, когда им создают форму complaint.This не имеет никакой аутентификации ..Rails 3 сложная форма с вложенными атрибутами

Vehicle.rb

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

User.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 

Благодаря

ответ

0

Не имеет смысла для меня, почему у пользователей и транспортных средств были бы вложенные жалобы. Вероятно, вы не создаете жалоб одновременно с созданием новых пользователей и новых автомобилей. Ты?

Предполагается, что пользователь изготовлен, производится транспортное средство, а затем пользователь жалуется на транспортное средство, после чего подается жалоба. Хронологически позже, чем когда создается пользователь или транспортное средство.

Итак, возможно, вытащите вложенные атрибуты. Вместо этого вы можете использовать скрытое поле и передать идентификатор автомобиля в качестве параметра, или вы можете использовать маршрут вложенного ресурса, чтобы получить идентификатор vehicle_id. Создание жалобы через has_many ассоциации CURRENT_USER, который жаловался:

new_complaint_path(vehicle_id: @vehicle.id) 

в контроллере жалобы

def new 
    @complaint = current_user.complaints.build 
    @complaint[:vehicle_id] = params[:vehicle_id] 
end 
+0

благодарит за reply..Yes IM создания нового пользователя и новый автомобиль, когда им создать жалобу .. эта форма не имеет аутентификации .. – shiva