我一直在为Rails中的问题苦苦挣扎几天,但仍无法找到解决方案。你能帮帮我吗?
问题:我有一个搜索框,在params结构中放置:search_string条目。我使用form_tag,它工作正常。
<% form_tag :controller=> 'items', :action => 'find' do %>
<%= text_field_tag :search_string, params[:search_string] %>
<% end %>
问题是我想添加和更新其他params键值(在另一个视图中),例如:start_date,以过滤search_string结果。这是我在视图中使用的代码剪切:
<% form_tag :controller=> "items", :action => "find", :params => params do %>
<%= hidden_field_tag :date_start, '2010-04-01' %>
<%= submit_tag 'April' %>
<% end %>
<% form_tag :controller=> "items", :action => "find", :params => params do %>
<%= hidden_field_tag :date_start, '2010-03-01' %>
<%= submit_tag 'March' %>
<% end %>
当我第一次点击“四月”提交按钮时,参数被正确传递给控制器(即有一个参数[:start_date] ='四月')。但是,当我尝试之后单击“March”按钮时,params [:start_date]不会更新。我肯定认为这是一个愚蠢的新手错误,但我无法弄清楚如何正确使用form_tag。你能告诉我我做的事情吗?否则,你能告诉我哪个是使用form_tag更新params的最佳方法吗?非常感谢你提前。
米克尔
答案 0 :(得分:0)
您可能想要做的是强制合并参数,类似于:
<% form_tag :controller=> "items", :action => "find", :params => params.merge(:date_start => '2010-03-01') do %>
<%= submit_tag 'March' %>
<% end %>
你有可能无意中提交了两个相同的参数,其中第一个被选中,但由于“第一个”没有明确定义,你可能会得到不一致的结果。
查看日志文件,了解从这两种表单中收到的参数。