2015-08-08 61 views
0

我使用簡單的表單來處理初始級別的Web應用程序,這是通過用戶的天數請求保存的。Rails POST表單不要將完整的數據發送到數據庫

這裏是碼

視圖/天/ index.html.erb

<%= form_for @daysoff, url: {action: "create"} do |f| %> 
    <%= f.date_field :offdate, id: 'altField' %> 
    <p> User holding the fort/Yerine bakicak kisi 

    <%= f.collection_select(:assign_id, @people, :id, :name) %> </p> 
    <%= f.hidden_field :user_id, value: @user.id %> 
    <%= f.submit "Submit" %> 
    <% end %> 

控制器/ days_controller.rb

class DaysController < ApplicationController 
    unloadable 

    def index 
    @people = User.all 
    @user = User.current 

    @daysoff = Daysoff.new 

# params[:daysoff][:user_id] = @user.id 

    end 

    def create 

    off_dates = params["daysoff"]["offdate"].try(:split,',') 

    off_dates.each do |off_date| 
     @days_off = Daysoff.new 
     @days_off.offdate = Date.strptime(off_date.strip, "%m/%d/%Y") 
     @days_off.user_id = User.current 
     @days_off.assign_id = params["assign_id"] 
     @days_off.status = 0 
     @days_off.save! 
    end 

    redirect_to "/days_off_redmine", :flash => { :success => "Istek gonderildi." } 

    end 

沒有任何模型驗證。

數據庫遷移文件。

class CreateDaysoffs < ActiveRecord::Migration 
    def change 
    create_table :daysoffs do |t| 
     t.date :offdate 
     t.integer :user_id 
     t.integer :assign_id 
     t.boolean :status 
    end 
    end 
end 

當我嘗試填充和崗位的形式, Offdates和狀態正確填寫,但USER_ID和assign_id插入分貝爲NULL。


+----+------------+---------+-----------+--------+ 
| id | offdate | user_id | assign_id | status | 
+----+------------+---------+-----------+--------+ 
| 1 | 2015-07-14 | NULL |  NULL |  0 | 
| 2 | 2015-07-15 | NULL |  NULL |  0 | 
| 3 | 2015-07-14 | NULL |  NULL |  0 | 
| 4 | 2015-07-15 | NULL |  NULL |  0 | 
| 5 | 2015-07-22 | NULL |  NULL |  0 | 
| 6 | 2015-07-23 | NULL |  NULL |  0 | 
| 7 | 2015-07-21 | NULL |  NULL |  0 | 
| 8 | 2015-07-22 | NULL |  NULL |  0 | 
| 9 | 2015-07-21 | NULL |  NULL |  0 | 
| 10 | 2015-07-22 | NULL |  NULL |  0 | 
| 11 | 2015-07-21 | NULL |  NULL |  0 | 
| 12 | 2015-07-22 | NULL |  NULL |  0 | 
| 13 | 2015-07-29 | NULL |  NULL |  0 | 
| 14 | 2015-07-30 | NULL |  NULL |  0 | 
| 15 | 2015-07-29 | NULL |  NULL |  0 | 
| 16 | 2015-07-30 | NULL |  NULL |  0 | 
+----+------------+---------+-----------+--------+ 

爲什麼這會發生這樣呢?

+0

您的形式'user_id'和控制器使用'User.current'這是零。這似乎不一致:)。你也將'assign_id'設置爲'params [「assign_id」],它也是零,因爲它不在你的窗體中,或者它在別的什麼地方? –

+0

@JackWatson請檢查收集字段。即時通訊使用webrick,它把日誌到標準輸出,當我發送請求,我看到我的所有領域已滿。我認爲你的想法沒有錯誤。 –

回答

0

跳過代碼看起來非常糟糕的事實...

表單屬性存在於params[:daysoff],你需要通過它去字段,例如:

得到由params[:daysoff][:assign_id]

assign_id

@days_off.user_id = User.current應該是相當:@days_off.user_id = User.current.id

或@days_off應該在模型類添加

belongs_to :user並且將它做工精細,除非User.current是零

+0

感謝您提高我的觀點,我會盡力。 –