将多个HTML表与POST请求一起使用

时间:2012-07-30 15:21:09

标签: html ruby-on-rails sqlite

这可能是一个相当容易的问题,我只是不熟悉Rails或HTML ......

我的View中有两个HTML表,两个表都是从各自的数据库表中更新的。我有一个下拉菜单,为每个表选择一个时间范围。我最初使用过GET请求,但这搞砸了另一个表,我宁愿在URL中没有params。因此,使用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 param除外)。 如何让每张桌子“记住”它在哪里?

Ruby 1.9.3,Rails 3.2.6,SQLite3 3.6.20

谢谢!

1 个答案:

答案 0 :(得分:0)

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

如果您提交一个表单(仅包含一个表格),则只有该表单中的参数才会到达服务器。它没有得到其他形式的值......所以当它重新渲染页面时,它不知道第二种形式中是否有其他值。

与任何问题一样,有多种方法可以解决它们各自的问题。

AJAX是一个很好的解决方案 - 它意味着表单已经提交,但你仍然留在页面上,原始的第二种形式仍然存在......那样第二种形式的所有信息都没有得到每次点击“提交”都会丢失。

如果由于某种原因你不能这样做,另一种(相当丑陋的)方式就是只有一种形式......只发布一个动作......然后根据是否有用的信息决定做什么在form1或form2的数据中。除非你出于某种奇怪的原因,否则我不建议这样做。

我想说的是AJAX方法。