我有3个表- OwnerofProperty
, Property
和Ticket
。我想用form_for
来表示物业预订;我可以做一个表单来检索数据从Property
,其中提交按钮保存在Ticket
表中的数据?我问这个问题是因为我不知道这是否可能,也不知道如何做到。
注意:我只创建了关系:OwnerofProperty
一对多Property
Property
一对一Ticket
我需要这个表单只是为了让用户能够看到可用的属性,只能预订一个,如何使这个表单?
模式。三个模型的Rb:
create_table "owners", :force => true do |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 do |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 do |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"
是可能的。
让我们看看ticket_controller.rb
def new
@property = Property.find 20 #20 is property id
@properties = Property.all
#@ticket = Ticket.new
end
现在在view
(你想要创建表单):
<%= form_for @ticket do |f| %>
<%= f.select :property_id, @properties.collect {|p| [ p.name, p.id ] }%> <!-- just an example, Ticket model has a field named "property_id" -->
<%= f.submit %>
<%= end %>
此表单提交给ticket_controller
的create
动作。并且您可以将所有数据作为params
保存到表中。
def create
@ticket = Ticket.new(params[:ticket])
@ticket.save
respond_to do |format|
format.html{redirect_to( your_desired_path)}
end
end