我創建了一個Rails表單,用以下字段創建一個「事件」(嵌套在組資源中)。字段when
和exactwhen
(非常糟糕命名,我知道,我只是創造一個快速演示)的意思是指日期和時間表單字段沒有出現在對象內散列
<%= form_for [@group, @event], url: {action: "create"}, html: {class: "nifty_form"} do |f| %>
<%= label_tag(:title, "Event Title") %>
<%= f.text_field :title %>
<%= label_tag(:description, "Event Description") %>
<%= f.text_area :description, size: "60x12" %>
<%= label_tag(:address, "Address") %>
<%= f.text_field :address %>
<%= label_tag(:when, "When") %>
<%= text_field_tag(:when) %>
<%= label_tag(:exactwhen, "exactwhen") %>
<%= text_field_tag(:exactwhen) %>
<%= f.submit "Create" %>
<% end %>
這些字段在數據庫中的事件模型存在
create_table "events", force: true do |t|
t.string "title"
t.text "description"
t.string "address"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "group_id"
t.date "when"
t.time "exactwhen"
end
然而,當我提交表單,你會發現when
和exactwhen
不包含在事件哈希
Parameters: {"utf8"=>"✓", "authenticity_token"=>"5kkL2a3yDHEINSqSg+1cXd708GtRPgymbKmASs+eih8=", "event"=>{"title"=>"First Wankers Meeting", "description"=>"get drunk", "address"=>"57 Robert Crescent"}, "when"=>"08/23/2013", "exactwhen"=>"12", "commit"=>"Create", "group_id"=>"38"}
和when
和exactwhen
數據沒有得到插入記錄
Group Load (0.6ms) SELECT "groups".* FROM "groups" WHERE "groups"."id" = $1 LIMIT 1 [["id", "38"]]
(0.2ms) BEGIN
SQL (2.0ms) INSERT INTO "events" ("address", "created_at", "description", "group_id", "title", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["address", "57 Robert Crescent"], ["created_at", Sat, 03 Aug 2013 16:38:30 UTC +00:00], ["description", "get drunk"], ["group_id", 38], ["title", "First Wankers Meetup"], ["updated_at", Sat, 03 Aug 2013 16:38:30 UTC +00:00]]
我假設,因爲他們在事件沒那麼對於when
和exactwhen
表單數據沒有得到插入到數據庫哈希值。如果是這樣的話,你能解釋一下爲什麼,或者解釋我怎樣才能糾正這個問題?
這是events_controller.rb
def create
@group = Group.find(params[:group_id])
@event = @group.events.build(event_params)
if @event.save
....
private
def event_params
params.require(:event).permit(:title, :description, :when, :exactwhen, :address)
end