我使用简单的表单来处理初始级别的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 |
+----+------------+---------+-----------+--------+
为什么这会发生这样呢?
您的形式'user_id'和控制器使用'User.current'这是零。这似乎不一致:)。你也将'assign_id'设置为'params [“assign_id”],它也是零,因为它不在你的窗体中,或者它在别的什么地方? –
@JackWatson请检查收集字段。即时通讯使用webrick,它把日志到标准输出,当我发送请求,我看到我的所有领域已满。我认为你的想法没有错误。 –