2012-08-02 24 views
0

我有一个ActiveRecord,当我点击保存除日期以外的所有记录保存。未使用rails 3.0保存日期字段?

我contorller

class UsersController < ApplicationController 

def create 
    puts params[:user] 
    @user1 = User.new(params[:user]) 
    if @user1.save 
    saveduser = User.where("fbid = ?",params[:user][:fbid]) 
    unless saveduser.first.nil? 
    session[:user] = saveduser.first 
    end 
    puts "user saved " 
    redirect_to "https://stackoverflow.com/users/dashboard" 
    else 
    puts "error while saving user" 
    end 
end 

视图

<h3>User Details</h3> 
<%= form_for(@user) do |f| %> 
<table> 
    --some columns 
<tr> 
    <td><%= f.label :state %></td> 
    <td> <%= f.text_field :state %></td> 
</tr> 
<tr> 
    <td><%= f.label :dob %></td> 
    <td> <%= f.text_field :dob %></td> 
</tr> 
    <%= f.hidden_field :fbid %> 
</table> 
    <%= f.submit %> 
<% end %> 
<table> 

在控制台时,创建方法被调用UserController的。我可以看到

{"username"=>"xxxx.xx.94", "firstname"=>"xxxx", "lastname"=>"Raxxstogi", "emaild"=>"[email protected]", "city"=>"Los Angeles", "country"=>"USA", "state"=>"CA", "dob"=>"08/13/1983", "fbid"=>"xxx"} 

我的数据库表列

dob | date | YES | | NULL |

这是要去哪里错了?

谢谢

回答

2

您在表单中使用text_field来保存数据库中的Date类型字段。请尝试使用这里描述的日期帮助器方法: http://guides.rubyonrails.org/form_helpers.html#using-date-and-time-form-helpers

+0

日期助手select_date或select_date_tag不支持form_tag .. – harshit 2012-08-03 00:04:16

+0

确定date_select工程..默认情况下它设置为今天的日期..我需要计算如何设置正确的值.. – harshit 2012-08-03 00:09:24

+0

其作品,但是什么是我正在使用jQuery日期选择器 – vishB 2014-01-13 06:12:19

0

它可能是您的日期格式的问题。你可以配置活动记录来接受这种格式或使用strftime或类似的东西将日期参数转换为日期对象

2

Ruby不理解您的日期格式。你可以明确地解析与Date::strptime日期,也许在模型中的setter方法解决这个问题:

class User < ActiveRecord::Base 
    def dob=(date) 
    date = Date.strptime(date, '%m/%d/%Y') if date.is_a?(String) 
    write_attribute(:dob, date) 
    end 
end 

我会的,但是,第二jordanpg是否能够使用Rails的日期助手,除非你知道该格式推荐每次都会一样。