轨道 - form_foR语言 如何让我的"财产"表单更新"票证"模型?



我有3个表- OwnerofProperty, PropertyTicket。我想用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_controllercreate动作。并且您可以将所有数据作为params保存到表中。

def create
@ticket = Ticket.new(params[:ticket])
@ticket.save
  respond_to do |format|
    format.html{redirect_to( your_desired_path)}
  end
end

最新更新