Rails объединил два поля формы в одно

#javascript #ruby-on-rails #coffeescript

#javascript #ruby-on-rails #coffeescript

Вопрос:

Как мне объединить день и время в переменную «start_time» (и «end_time») перед отправкой? JS?

  <%= form_for @task do |f| %>
        <%= render 'shared/error_messages', object: f.object %>
          <div class="time_selectors">
            <%= f.label :start_time %>
            <%= f.text_field :start_time, :class => 'datepicker' %>
            <select class="form-control time_dropdown" id="start_hour">
              <option>Select Date</option>
            </select>
            <div class="clear_both"></div>
            <%= f.label :end_time %>
            <%= f.text_field :end_time, :class => 'datepicker' %>
            <select class="form-control time_dropdown" id="end_hour">
              <option>Select Date</option>
            </select>
            </div>
            <div class="clear_both"></div>
          </div>
          <div class="clear_both"></div>
          <%= f.submit "Create Task", class: "btn btn-large btn-primary" %>
        </div>
    <% end %>
 

Я объединил их в своей модели задач, и я бы предпочел оставить их объединенными, если смогу.

Мой JS прямо сейчас не работает. Чего мне не хватает?

 $('#new-task').submit ()->
  valuesToSubmit = $(this).serialize
  console.log('test')
  console.log(valuesToSubmit)
  return false
$('button').click ()->
  console.log ('test2')
 

Комментарии:

1. Насколько мне известно, либо вы должны сделать это в своем javascript, либо вам нужно сбросить эти значения на стороне сервера с помощью функций даты 🙂

2. Итак, как мне взять все, что есть в выпадающих списках, добавить это в новый параметр и отправить его контроллеру. Я полагаю, что было бы легко разобрать его в контроллере, но, похоже, я не могу предотвратить отправку.

3. Для будущих вопросов вам следует пояснить, что doesn't work это значит. Чего вы ожидаете? Что на самом деле произошло?

Ответ №1:

Как насчет чего-то подобного?

 $('form').on 'submit', (event) ->
    event.preventDefault()
    start_time = ''
    start_time  = $(@).find('input[name=start_day]').val()
    start_time  = '_'
    start_time  = $(@).find('input[name=start_hour]').val()
    $('<input/>', {type: 'hidden', name: 'start_time', value: start_time}).appendTo($(@))
    @submit()
 

(* Версия CoffeeScript не тестировалась — используйте рабочую скрипку в качестве руководства.)

Скрипка