我想知道如何将一些输入合并到数据库参数DATETIME中:
我希望用户选择dropdown-list中的日期以及时间中的日期。
这样的事情:
但我不知道如何将这些输入合并到我在模型中设置的DATETIME参数:
# encoding: UTF-8
class Schedule < ActiveRecord::Base
belongs_to :user
validates :user_id, presence: {message: "..."}
validates :titel, presence: {message: "..."}
validates :location, presence: {message: "..."}
#validates :time, presence: {message: "..."}
#validates :date, presence: {message: "..."}
validates :date_time, presence: {message: "..."}
end
我希望你理解我的问题
谢谢你的帮助。
如果您需要更多信息,请告诉我们。
def add_now
@schedule = Schedule.new(schedule_params)
@schedule.date_time = DateTime.parse("#{params[:year]}-#{params[:month]}-#{params[:day]}")
if @schedule.valid?
@schedule.save
#UserMailer.welcome_email(@user).deliver #BestätigungsEmail versenden
flash[:notice] = 'Ein neuer Termin wurde erstellt.'
redirect_to :root
else
render :action => "add"
end
end
这是我的观点 - 呃:
<p>
<strong>Date_Time:</strong><br/>
Tag: <%= schedule_form_builder.select :date_time, [['01','01'],['02','02'],['03','03']] %>
Monat: <%= schedule_form_builder.select :date_time, [['01','01'],['02','02'],['03','03']] %>
Jahr: <%= schedule_form_builder.select :date_time, [['2013','2013'],['2014','2014'],['2015','2015']] %>
<%= schedule_form_builder.text_field :date_time, :class => 'form-control', :placeholder => 'Passwort erstellen' %>
<%= show_field_error(@schedule, :date_time) %>
</p>
没有日,月或年,所以我没有正确理解你 如果你能再次帮助我会很好。
答案 0 :(得分:1)
Rails有一个特定的表单助手来执行此操作。您应该将视图更改为:
<%= schedule_form_builder.datetime_select(:date_time) %>
它将通过params:
{
"date_time(1i)"=>"2015", # year
"date_time(2i)"=>"7", # month
"date_time(3i)"=>"29", # day
"date_time(4i)"=>"11", # hour
"date_time(5i)"=>"52" # minute
}
ActiveRecord
会自动理解这种格式。没有必要手动弄乱这个参数。因此,您可以像往常一样构建实例,例如Schedule.new(schedule_params)
。
最佳!
答案 1 :(得分:0)
您可以将这三个参数合并为一个字符串,并使用DateTime::parse
方法将字符串转换为DateTime:
schedule.date_time = DateTime.parse("#{params[:year]}-#{params[:month]}-#{params[:day]}")
或者只是从数字中初始化DateTime对象:
schedule.date_time = DateTime.new(params[:year].to_i, params[:month].to_i, params[:day].to_i)