2016-08-15 21 views
0

我花时间学习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> 

我看着堆栈溢出,但没有发现类似的东西。

+0

因此,我不完全相信我遵循你所问的,但如果我这样做,你可以只有与'可选'内容被设置为隐藏的divs,并有一个点击处理程序的初始输入切换基于选择值的可见性? – jaydel

+0

是的,那正是我想要做的,但是我也想获得当前的时间和日期,以便我的start_time和start_date字段,只有当用户选择yes才能立即处理。 @jaydel –

回答

0

首先,您需要命名你的“立即治疗”选场,并提供值的选项:

<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 

请记住,这是一个简单的例子,因为你没有提供有关代码的更多细节。

+0

我在作品中有另一个答案,但我认为这是正确的。这里的关键之一是你已经拥有了你的商业逻辑,而不是视图。参数管理是控制器的职责。 – jaydel

+0

那不会发送params到控制器...你必须使用'select_tag' - > http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag – liborza

+1

使用'select_tag'只是使用助手来渲染表单。这与发送数据到控制器无关:) – siemakuba

相关问题