Как вернуть несколько параметров, используя select_tag в ruby ​​на рельсах - PullRequest
0 голосов
/ 14 ноября 2018
<% select_tag(:report_id, options_for_select(
  [["Detail1", 1], ["Detail2", 2], ["Detail3", 3], ["Detail4", 4], ["Detail5", 5], ["Detail6", 6], ["Detail7", 7]]))%>
<% submit_tag("Generate Report") %>

У меня есть меню выбора выше. Это вернет параметр report_id на основе значения, выбранного пользователем. Теперь мне нужно, чтобы другой параметр с именем format был установлен как: xlsx, если report_id равен 1 или 2, а формат должен быть установлен в: pdf, если report_id> 2. Как я могу этого добиться? Пожалуйста, помогите!

Я пробовал что-то подобное, но это не работает:

<% select_tag(:report_id, options_for_select(
  [["Detail1", 1], ["Detail2", 2], ["Detail3", 3], ["Detail4", 4], ["Detail5", 5], ["Detail6", 6], ["Detail7", 7]]))%>


<% if report_id < 3 %>
  <%= hidden_field_tag :format, :xlsx %>
<% elsif report_id >=3 %>
  <%= hidden_field_tag :format, :pdf %>
<% end %>


<% submit_tag("Generate Report") %>

Я получаю эту ошибку с кодом выше:

format parameter error

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Здесь вы можете сделать две вещи.

  • Вы можете написать, если условие в вашем контроллере после запуска действия

    if params[:report_id] >= 3 format = 'pdf' else format = 'xlsx' end

  • ИЛИ если вы хотите отправить из самой формы, вам нужно написать событие jquery onchange

    <% select_tag(:report_id, options_for_select( [["Detail1", 1], ["Detail2", 2], ["Detail3", 3], ["Detail4", 4], ["Detail5", 5], ["Detail6", 6], ["Detail7", 7]])) id: "something"%>

  • Jquery

    $('#something').on('change', function() { if(this.value >= 3) { $('#hidden_value').val('pdf') } else { $('#hidden_value').val('xlsx'); } })

  • скрытое поле <% hidden_field_tag :format , id: "hidden_value" %>

0 голосов
/ 14 ноября 2018

Вы не можете получить доступ к значению report_id до тех пор, пока не отправите его на сервер.Вы можете использовать JS / jquery для обновления format значения параметра при каждом изменении значения select_tag

<% select_tag(:report_id, options_for_select(
  [["Detail1", 1], ["Detail2", 2], ["Detail3", 3], ["Detail4", 4], ["Detail5", 5], ["Detail6", 6], ["Detail7", 7]]), id: "report_id")%>
<%= hidden_field_tag :format, :xlsx, id: "format_param" %>
<% submit_tag("Generate Report") %>

JS для назначения значения параметров формата при каждом изменении значения select_tag

$("#report_id").change(function(){
  var report_val = $("#report_id").val();
  if(report_val < 3)
    $('#format_param').val("xlsx")
  else
     $('#format_param').val("pdf")
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...