我有这样的表格:
<h1> Global data management </h1> </br> </br>
<h2>Enter the conditions and click "find" option to search for users based on conditions. </br> Or click the "List" option to list all the data. </h2>
</br></br></br>
<%= form_for(:find_field, url: find_field_path , method: :get) do |f| %>
<div class="row">
<div class="span8 offset1">
<div class = "row">
<div class = "span4">
<div class="field">
<%= f.label :data_type_choice, "Data type" %>
<%= f.select :data_type_choice, [["all","all"],["2D","2D"],["3D","3D"],["2D3C","2D3C"],["3D3C","3D3C"]] , :name => nil%>
</div>
</br></br>
<h3> COMPLETED WITHIN </h3>:</br>
<div class="field">
<%= f.label :from_date_choice , "From date " %>
<%= f.date_select :from_date_choice , :name => nil%>
</div>
</div>
<div class = "span4">
<div class="field">
<%= f.label :basin_choice, "Basin" %>
<%= f.select :basin_choice, [["all","all"],["Cauvery","Cauvery"],["KG-PG","KG-PG"],["others","others"]] , :name => nil %>
</div>
</br></br>
<h3> </h3>
<div class="field">
<%= f.label :to_date_choice , "To date " %>
<%= f.date_select :to_date_choice , :name => nil %>
</div>
</div>
</div>
</br></br>
<%= f.submit " Search ", class: "btn btn-large btn-primary" %>
</div>
</div>
<% end %>
一切正常,所有参数都正确传递等,但在我试图显示结果的视图中,我得到了一个巨大的网址:
http://localhost:3000/global/data/find?utf8=%E2%9C%93&find_field%5Bdata_type_choice%5D=2D&find_field%5Bfrom_date_choice%281i%29%5D=2012&find_field%5Bfrom_date_choice%282i%29%5D=7&find_field%5Bfrom_date_choice%283i%29%5D=9&find_field%5Bbasin_choice%5D=KG-PG&find_field%5Bto_date_choice%281i%29%5D=2012&find_field%5Bto_date_choice%282i%29%5D=7&find_field%5Bto_date_choice%283i%29%5D=9&commit=++Search++
我尝试过使用“:name =&gt; nil”,如railscast所示 为什么会发生这种情况,如何将网址大小减小到“http:// localhost:3000 / global / data / find”?
编辑:
这是我在fields_controller中的find方法:
def find
@data_type_choice = params[:find_field][:data_type_choice]
@basin_choice = params[:find_field][:basin_choice]
@from_date_choice = params[:find_field][:from_date_choice]
@to_date_choice = params[:find_field][:to_date_choice]
end
我还希望通过find.html.erb显示在表单中输入的数据,如下所示:
<h1><%= @data_type_choice %> dsfgdfsg</h1>
如果我将其作为发布请求,则不会呈现erb!我该怎么办?
谢谢:)
答案 0 :(得分:2)
只需将您的方法从GET更改为POST并相应地更改路线。
尝试
<%= form_for(:find_field, url: find_field_path , method: :post) do |f| %>
您的路由文件应与POST请求匹配。