2015-08-08 60 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

感谢您提高我的观点,我会尽力。 –