当在Rails的ruby中的form_tag中单击提交按钮时,如何在UI中保留相同的表单?

时间:2019-06-24 08:04:13

标签: ruby-on-rails

我的Rails应用中有一个form_tag。当我单击提交按钮时,表单将重新呈现。我想停止重新渲染,并且即使单击“提交”按钮,我也希望保留所有输入字段的原始表单。

我该如何实现?请帮助!

<%= form_tag generate_report_path(:header => true) do |f| % >
<div class="container-fluid">
  <div style="padding-right:10px">

    <%= select_tag(:report_id, options_for_select(
      [["Select Report Type", 0],
      ["Report1", 1],
      ["Report2", 2],
      ["Report3", 3]]), id: "report_selection") %>


      <%= hidden_field_tag :format, :pdf %>

我的表单中有一个select_tag,如上所示,用户使用它来选择他想生成的报告(report1或2或3)

基于上面的选择,一组不同的输入控件将显示在上面显示的select_tag dropdown的正下方。

当用户在输入控件上选择自己喜欢的值,然后单击“提交”按钮(标记为“生成报告”)时,将发生以下情况:

  • 显示在select_tag dropdown下方的所有输入控件都消失了,仅留下带有默认选择的select_tag dropdown(以便用户可以再次选择他要生成的报告)

即使在用户单击“提交”按钮之后,如何禁用上述步骤并保留所有输入控件(显示在select_tag dropdown下面)?

请帮助!

2 个答案:

答案 0 :(得分:1)

button_tag-> <%= button_tag "Generate Report", class: 'btn btn-sm btn-primary'%>替换HTML按钮,这将解决页面刷新问题。

答案 1 :(得分:0)

Form_tag支持远程选项。

请参见

https://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tag

尝试

<%= form_tag(generate_report_path(:header => true), remote: true) do |f| % >

它将请求转换为xml请求,因此浏览器在获得响应后将不会刷新页面。

您可以阅读rails指南以了解更多详细信息。

https://guides.rubyonrails.org/working_with_javascript_in_rails.html