【问题标题】:How to get the current date and time after a user select action如何在用户选择操作后获取当前日期和时间
【发布时间】:2016-08-15 18:19:57
【问题描述】:

我花时间学习 Rails,现在我正在做一个演示项目。

我希望用户在护理请求_form 中选择他们是否需要立即护理。如果用户选择“否”,则将要求用户从接下来的两行隐藏代码中选择时间和日期,保存start_timestart_date。如果用户选择“是”,我想在用户单击表单上的提交按钮后为start_timestart_date 字段传递当前时间和日期。

我知道我将使用 if/else 语句、隐藏函数和 Time.now/DateTime.now 方法,但我对如何实现它们感到困惑。

    <div class="row">
    <div class="form-group">
      <label class="control-label">Is immediate care needed?</label>
      <select class="form-control edit">
        <option>Yes</option>
        <option>No</option>
      </select>
    </div>
  </div>


<div class="row">
  <div class="form-group">
    <label>Choose your start date.</label>
    <%= f.text_field :start_day, placeholder: "MM/DD/YY", class: "form-control" %>
  </div>
</div>


<div class="row">
  <div class="form-group">
    <label>Choose your start time.</label>
    <%= f.text_field :start_time, placeholder: "08:00 AM", class: " form-control" %>
  </div>
</div>

我查看了 Stack Overflow,但没有发现与此类似的内容。

【问题讨论】:

  • 所以我不完全确定我是否按照您的要求进行操作,但是如果我这样做了,您是否可以将带有“可选”内容的 div 设置为隐藏并设置点击处理程序根据选择的值切换可见性的初始输入?
  • 是的,这正是我想要做的,但我也想为我的 start_time 和 start_date 字段获取当前时间和日期,前提是用户选择是进行即时护理。 @jaydel

标签: javascript jquery ruby-on-rails ruby


【解决方案1】:

首先,您需要为“即时护理”选择字段命名,并为选项提供值:

<select class="form-control edit" name="immediate_care">    
  <option value="yes">Yes</option>
  <option value="no">No</option>
</select>

然后,您需要检查所选值并设置当前日期和时间值,如果该值为“是”(可能是控制器内的 before_filter):

if params[:immediate_care] == 'yes'
  current_time = Time.now
  params[:start_time] = current_time.strftime '%l:%m %p'
  params[:start_day] = current_time.strftime '%d/%m/%y'
end

请记住,这是一个简化的示例,因为您没有提供有关代码的更多详细信息。

【讨论】:

  • 我正在研究另一个答案,但我认为这是正确的。这里的关键点之一是您的业务逻辑属于它:不在视图上。参数管理是控制器的职责。
  • 那不会向控制器发送参数...你必须使用select_tag -> apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag
  • 使用select_tag 只是使用助手来呈现表单。这与向控制器发送数据无关:)
  • 谢谢@siemakuba:!!!这解决了我 1/2 的问题。我也无法隐藏最后两个文本字段,除非用户选择了“否”。
  • if params[:immediate_care] == 'yes' current_time = Time.now params[:start_time] = current_time.strftime '%l:%m %p' params[:start_day] = current_time。 strftime '%d/%m/%y' 结束
猜你喜欢
  • 2011-01-01
  • 2013-10-01
  • 2014-07-27
  • 1970-01-01
  • 2012-12-04
  • 2020-07-02
  • 1970-01-01
  • 2020-08-23
相关资源
最近更新 更多