rails - form_for - how to have my 'Property' form update the 'Ticket' model? -
i have 3 tables- ownerofproperty , property , ticket. want make form using form_for represent property booking; can make form retrieve data property submit button saves data in ticket table? asking because have no idea if can possible or how make it.
note: have created relations : ownerofproperty one-to-many property
property one-to-one ticket
i need form make user able see avaliable properties , can book 1 , how make form ?
schema.rb 3 models :
create_table "owners", :force => true |t| t.string "f_name" t.string "l_name" t.string "address" t.string "tel_no" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false end create_table "properties", :force => true |t| t.string "p_street" t.string "p_city" t.string "postcode" t.string "property_type" t.integer "rooms" t.integer "rent" t.integer "owner_id" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false end add_index "properties", ["owner_id"], :name => "index_properties_on_owner_id" create_table "tickets", :force => true |t| t.string "city" t.string "street" t.string "ticket_type" t.integer "rooms" t.integer "rent" t.integer "property_id" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false end add_index "tickets", ["property_id"], :name => "index_tickets_on_property_id"
yes, possible.
let's see ticket_controller.rb
def new @property = property.find 20 #20 property id @properties = property.all #@ticket = ticket.new end now in view (where want create form):
<%= form_for @ticket |f| %> <%= f.select :property_id, @properties.collect {|p| [ p.name, p.id ] }%> <!-- example, ticket model has field named "property_id" --> <%= f.submit %> <%= end %> this form submits create action of ticket_controller. , able data params , save table.
def create @ticket = ticket.new(params[:ticket]) @ticket.save respond_to |format| format.html{redirect_to( your_desired_path)} end end
Comments
Post a Comment