0

这可能是一个相当简单的问题,我只是不精通 Rails 或 HTML ......

我的视图中有两个 HTML 表,它们都从各自的数据库表中更新。我有一个下拉菜单来选择每个表的时间范围。我最初使用了一个 GET 请求,但这弄乱了另一个表,我宁愿在 URL 中没有参数。因此,使用 POST,每个表都独立工作,但每次我更新一个表时,它都会将另一个表返回到我的:selected =>标签指定的默认时间范围。

<%= form_tag home_landing_path, :method => 'post' do %>
  <p>
    <%= select_tag :timePeriod, options_for_select(["1 Week Ago", "3 Months Ago"], :selected => params[:timePeriod]) %>
    <%= submit_tag "Refresh", :name => nil %>
  </p>
<% end %>

两个表都使用相同的代码(:timePeriod参数除外)。如何让每张桌子“记住”它的位置?

Ruby 1.9.3、Rails 3.2.6、SQLite3 3.6.20

谢谢!

4

1 回答 1

0

在 html 中,表单是完全相互独立的。

如果您提交一个表单(仅围绕一个表),那么只有该表单中的参数才会到达服务器。它没有从其他表单中获取任何值......所以当它重新呈现页面时,它不知道第二种表单中是否有其他值。

与任何问题一样,有多种解决方法,每种方法都有自己的问题。

AJAX 是一个很好的解决方案 - 这意味着表单被提交,但您仍然留在页面上,原始的第二个表单仍然存在......这样第二个表单中的所有信息都不会每次都丢失你点击“提交”。

如果由于某种原因你不能这样做,另一种(相当丑陋的)方法是只有一个表格......只发布一个动作......然后根据 form1 中是否有有用的信息或form2的数据。我不推荐这种方式,除非你出于某种奇怪的原因必须这样做。

我会说去 AJAX 方法。

于 2012-09-05T09:23:23.950 回答