2013-08-03 35 views
0

我創建了一個Rails表單,用以下字段創建一個「事件」(嵌套在組資源中)。字段whenexactwhen(非常糟糕命名,我知道,我只是創造一個快速演示)的意思是指日期和時間表單字段沒有出現在對象內散列

<%= 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 

然而,當我提交表單,你會發現whenexactwhen不包含在事件哈希

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"} 

whenexactwhen數據沒有得到插入記錄

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]] 

我假設,因爲他們在事件沒那麼對於whenexactwhen表單數據沒有得到插入到數據庫哈希值。如果是這樣的話,你能解釋一下爲什麼,或者解釋我怎樣才能糾正這個問題?

這是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 

回答

0

您正在使用的form_for做。將所有字段(和標籤)更改爲普通字段,而不是標記字段。所以將text_field_tag改爲text_field。

如果你這樣做,一切都應該工作。然後所有的屬性應該在正確的參數散列。

欲瞭解更多信息請訪問rails api文檔中的form_for。

0

使用f.text_field,而不是text_field_tag創建操作就像你與前幾個表單字段

相關問題