0

我有一个 ActiveRecord,当我点击保存时,所有记录都被保存,日期除外。

我的控制器

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 "/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 中调用 create 方法时,在控制台中。我可以看到

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

我的数据库表列是

dob | date | YES | | NULL |

它哪里出错了?

谢谢

4

3 回答 3

2

您在表单中使用 atext_field保存到Date数据库中的类型字段中。尝试使用此处描述的日期助手方法:http: //guides.rubyonrails.org/form_helpers.html#using-date-and-time-form-helpers

于 2012-08-02T23:10:05.940 回答
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 中使用日期助手,除非您知道格式每次都相同。

于 2012-08-02T23:24:22.760 回答
0

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

于 2012-08-02T23:06:25.997 回答