在rails中保存数据库中'datetime'值的问题

时间:2013-09-23 08:46:23

标签: ruby-on-rails-3 datetime

我正在开发一个简单的程序,客户可以在其中下多个订单(即'customer'has_many:orders&'order'ally_to:customer)

我有一个表格,它接受客户名称和订单日期: new.html.erb

<h1>New order</h1>

<%= form_tag  orders_path, method: 'post' do %>
<div class="field">
    <%= label_tag  'customer_name' %><br />
    <%= text_field_tag :customer_name,params[:customer_name] %>
  </div>

  <div class="field">
    <%= label_tag 'order_date' %><br />
    <%= datetime_select :order_date, params[:order_date] %>
  </div>

  <div class="actions">
    <%= submit_tag "create" %>
  </div>

 <% end %>

控制器中的相应方法如下所示:

def create
@customer= Customer.find_by_name(params[:customer_name])
@order = @customer.orders.new(:order_date => params[:order_date])

respond_to do |format|
      if @order.save
format.html { redirect_to @order, notice: 'Order was successfully created.' }
        format.json { render json: @order, status: :created, location: @order }
      else
        format.html { render action: "new" }
        format.json { render json: @order.errors, status: :unprocessable_entity }
      end
    end
  end

我的问题是,params [:order_date]是一个哈希,我想把它作为'datetime'值发送到数据库。我尝试了一些组合,声明另一个类型为“DateTime”的变量,然后将其传递给数据库,但它根本无法工作。解决方案是什么? 在此先感谢:)

1 个答案:

答案 0 :(得分:0)

试试这个。

 date = DateTime.strptime("#{params['order_date']['(1i)']}-#{params['order_date']['(2i)']}-#{params['order_date']['(3i)']}T#{params['order_date']['(4i)']}:#{params['order_date']['(5i)']}", '%Y-%m-%dT%H:%M')