在form_for中构建日期时间而不在​​rails中使用datetime_select,如何发送params

时间:2015-01-08 09:37:58

标签: jquery ruby-on-rails ruby datetime form-for

我到处搜索过,我认为解决方案很简单,但我过于复杂了。

基本上我有一个具有以下属性的约会模型:

--- !ruby/object:Appointment
attributes:
  id: 
  time: 
  user_id: 
  created_at: 
  updated_at: 

时间:是日期时间属性

在控制器中,我有一个标准的创建动作:

class AppointmentsController < ApplicationController
  def create
     @appointment = Appointment.create(appointment_params)
     current_user.appointment = @appointment

     if @appointment.save
       flash[:success] = "Appointment Booked!"
       redirect_to appointments_path
     else
       redirect_to appointments_path
     end

  private
    def appointment_params
      params.require(:appointment).permit(:time, :test1, :test2)
    end
  end

在创建视图中,我有一个包含以下代码的表单:

<%= form_for(@appointment) do |f| %>

  <div class="field">
    <%= f.label :time %><br>
    <%= f.datetime_select(:time, {start_year: 2015, end_year: 2016, start_hour: 9, end_hour: 18, minute_step: 60}) %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

现在这一切都保存得非常好并且做了我想要的事情,用户使用日期时间选择器创建约会并且保存没有任何问题。

然而,当涉及到样式时,它变得困难,因为我不知道如何分解datetime_select。

我想要做的是使用我发现的jQuery日期时间选择器,但我不知道如何将params传递给我的控制器以构建一个日期时间以便能够保存到时间: 属性

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,其中一种方法是使用简单的f.textbox,并在此输入上使用JQuery datepicker。

更专业的方法是覆盖datetime_select。

示例:

在app / inputs

中创建 DatePickerInput
module SimpleForm
  module Inputs
    class DateTimePickerInput < Base
      def input
        @builder.text_field(attribute_name,input_html_options)
      end    
    end
  end
end

使用此$("input.date_time_picker").datepicker();创建JQuery Datepicker

使用<%= f.input :deadline, :as => :date_time_picker %>