2016-08-15 2 views
0

Я потратил время на изучение Rails, и теперь я работаю над демо-проектом.Как получить текущую дату и время после выбора пользователем действия

Я хочу, чтобы пользователь определил необходимость немедленного ухода по запросу _form. Если пользователь выбирает «Нет», пользователю будет предложено выбрать время и дату из следующих двух скрытых строк кода, сохранив start_time и start_date. Если пользователь выбирает «Да», я хочу передать текущее время и дату для полей start_time и start_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 с «необязательным» содержимым, который должен быть скрытым, и иметь обработчик щелчка для начального ввода, который переключает видимость на основе значения select? – jaydel

+0

Да, это именно то, что я пытаюсь сделать, но я также хочу получить текущее время и дату для полей start_time и start_date, только если пользователь выбирает «Да» для немедленного ухода. @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

Thats not gonna send params to controller ... U нужно использовать 'select_tag' -> http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag – liborza

+1

Использование' select_tag' просто использует хелпер для визуализации формы , Это не имеет никакого отношения к отправке данных на контроллер :) – siemakuba

Смежные вопросы