Как использовать опцию, выбранную в options_for_select в ruby ​​на рельсах - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть это раскрывающееся меню в моем приложении Rails:

<%= select_tag(:report_id, options_for_select([["Summary1", 7], ["Summary2", 6]])) %>

Пользователь выбирает значение из раскрывающегося списка выше и нажимает на кнопку, показанную ниже, для создания PDF:

<%= link_to 'Generate', pdf_path(format: :pdf, report: :report_id), class: 'btn btn-primary' %>

Это моя функция контроллера, которая вызывается при нажатии кнопки выше:

def show
  init_report_data
  respond_to do |format, report|
    format.html
    format.pdf do
      puts "***************** report id" + report.to_s + "*************************"
      case report 
      when 7
        report_name = 'summary1'
      when 6
        report_name = 'summary2'
      end

      render pdf:         "Forecast Report",
           template:    "forecast/" + report_name + ".html.erb",
           disposition: "attachment",
           :page_width  => '18in',
           :page_height => '15in'
    end
  end
end

Функция контроллера вызывается нормально, но значение параметра «report» оказывается пустым внутри вышеуказанной функции контроллера.

Что я здесь не так делаю? Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018
<%= form_tag forecast_report_pdf_path do %>
  <%= select_tag(:report_id, options_for_select([["Summary1", 7], ["Summary2", 6]])) %>
  <%= hidden_field_tag :format, :pdf %>
  <%= submit_tag("Generate Report") %>
<% end %>

Этот код работал.Большое спасибо за ваш вклад!

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

Проблема в том, что вы здесь не используете форму.

Используйте form_tag и держите select_tag внутри form_tag.

Также вам придется заменить link_to на кнопку submit. Не забудьте включить нижеприведенную строку в форму, чтобы запрос отвечал в формате pdf.

<%= hidden_field_tag :format, :pdf %>

Причина в том, что тег link_to не передает ваше значение select_tag или любое другое значение поля. В этом сценарии вы должны использовать form, и другой опции для него нет.

Или используйте JavaScript для замены id в url при изменении опции выбора. Поскольку вы пытаетесь получить действие шоу, я предполагаю, что вам нужно передать идентификатор в path.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...