我的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
下面)?
请帮助!
答案 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