您好,我只需要从我的表单中请求param start_hour,以便我将它与数据库进行比较并检查它是否存在,但是当我需要像
这样的形式的param时<%= f.datetime_select :start_hour, { :order => [:month, :day, :year, :hour, :minute], :prompt => { :day => 'Dia', :month => 'Mes', :year => 'Ano', :hour => 'Hora', :minute => 'Minuto' } }, {:class => "form-control", :style => "display: inline-block;
width: auto;
vertical-align: middle;"} %>
我在控制器中将其视为零,我怎么能要求日期时间表呢?非常感谢。这是我的控制器
def create
@start_hour = params[:courtesie][:start_hour]
@lesson_check = Lesson.find_by(start_date: @start_hour)
if @lesson_check.present?
@new_courtesie = Courtesie.new(courtesie_params)
@new_schedule = Schedule.new()
@new_schedule.options = params[:courtesie][:name]
@new_schedule.lesson_id = @lesson_check.id
@new_schedule.user_id = current_user.id
if @new_courtesie.save && @new_schedule.save
flash[:success] = "Cortesia agendada"
redirect_to cortesias_path
end
else
flash[:warning] = @start_hour
redirect_to cortesias_path
end
end
表单代码
<%= form_for(:courtesie, html: { class: "form-horizontal" } ) do |f| %>
<div class="form-group">
<label class="control-label col-md-2" for="sitename"> Nombre cortesia
</label>
<div class="col-md-9">
<%= f.text_field :name, class: 'form-control' %>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label" for="sitename"> Fecha cortesia</label>
<div class="col-lg-10">
<%= f.datetime_select :start_hour, { :order => [:month, :day, :year, :hour, :minute], :prompt => { :day => 'Dia', :month => 'Mes', :year => 'Ano', :hour => 'Hora', :minute => 'Minuto' } }, {:class => "form-control", :style => "display: inline-block;
width: auto;
vertical-align: middle;"} %>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="sitename"> Telefono </label>
<div class="col-md-5">
<%= f.number_field :phone, class: 'form-control' %>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="sitename"> Email </label>
<div class="col-md-5">
<%= f.text_field :email, class: 'form-control' %>
</div>
</div>
<div class="form-group">
<div class="col-lg-9 col-lg-offset-2">
<%= f.submit "Guardar", class: "btn btn-primary" %>
<button type="reset" class="btn btn-default">Reiniciar</button>
</div>
</div>
<% end %>
答案 0 :(得分:0)
检查您是否在强参数中设置参数。
def courtesie_params
params.require(:courtesie).permit(:start_hour, ...)
end
如果不允许,它将是零。
答案 1 :(得分:0)
我假设您已在强参数中允许start_hour
atrribute。与其他字段不同,您无法访问date_time字段中的值,例如params[:courtesie][:start_hour]
要了解我在说什么,请使用
替换create
方法中的代码
def create
render text: courtesie_params
end
现在,如果您提交表单,表单数据将显示为响应。
这就是表格数据的样子
{"name"=>"what", "start_time(1i)"=>"2016", "start_time(2i)"=>"8", "start_time(3i)"=>"9", "start_time(4i)"=>"23", "start_time(5i)"=>"40"}
嗯,你可以拥有更多的值,但我们可以专注于日期时间值。您可以查看所选值的存储位置。这就是params[:courtesie][:start_hour]
为零的原因。
所以,你需要检索像
这样的值datetime_params = params[:courtesie]
year = datetime_params["start_time(1i)"]
month = datetime_params["start_time(2i)"]
day = datetime_params["start_time(3i)"]
hour = datetime_params["start_time(4i)"]
minute = datetime_params["start_time(5i)"]
现在要比较两个日期时间,您实际上需要将收集的值转换为datetime
。
@start_hour = DateTime.new(year, month, day, hour, minute)
现在,您可以使用它来查询日期时间值并与其他日期时间值进行比较。
希望这有帮助!