@rusrich

Как значения в форме из выпадающего меню связать с условием в методе в Ruby on Rails?

Добрый день.

Хочу в форме создать выпадающий список, не связанный с БД и чтобы в зависимости от выбранного значения срабатывал нужный метод в модели.

Подскажите или направьте плиз в каком направлении копать.
Сам сообразить не могу.
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ответы на вопрос 2
Нужно либо сделать в контроллере несколько action` ов и делать запрос к нужному посредством javascript, либо сделать private методы в контроллере и вызывать их в нужном action`не посредством case. Первый вариант корректнее.
Ответ написан
nbekseitov
@nbekseitov
Ruby on Rails developer
Немного поздновато, но попробую помочь
- methods = [['Названия метода 1', 'method_1'], ['Названия метода 2', 'method_2']] # создаем массив с названием метода в модели и заголовком для него
= select_tag :method_to_run, options_for_select(methods), data: {page: test_page_path}

coffee:
  $('#method_to_run').on 'change', ->
    url     = $(@).data('page') # action в контроллере, на которую сделаем ajax запрос
    method  = $(@).find('option:selected').val() # метод в модели, который должен сработать
    req     = $.get(url, {method_to_run: method}) # делаем запрос в контроллер и передаем в параметр method_to_run наш метод

    req.success (html, status, xhr)->
      console.log status
    req.fail ->
      alert("Ошибка")

# controller
def test
  method_to_run = params[:method_to_run] # получаем в контроллере название метода
  available_methods = %w{ method_1 method_2 } # для безопасности

  # ищем метод в модели, и если он найден, запускаем его
  if Test.respond_to?(method_to_run) && method_to_run.in?(available_methods)
    Test.send(method_to_run)
  end
end
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы