这可能是一个相当容易的问题,我只是不熟悉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
谢谢!
答案 0 :(得分:0)
在html中,表单完全相互独立。
如果您提交一个表单(仅包含一个表格),则只有该表单中的参数才会到达服务器。它没有得到其他形式的值......所以当它重新渲染页面时,它不知道第二种形式中是否有其他值。
与任何问题一样,有多种方法可以解决它们各自的问题。
AJAX是一个很好的解决方案 - 它意味着表单已经提交,但你仍然留在页面上,原始的第二种形式仍然存在......那样第二种形式的所有信息都没有得到每次点击“提交”都会丢失。
如果由于某种原因你不能这样做,另一种(相当丑陋的)方式就是只有一种形式......只发布一个动作......然后根据是否有用的信息决定做什么在form1或form2的数据中。除非你出于某种奇怪的原因,否则我不建议这样做。
我想说的是AJAX方法。