【问题标题】:reducing url length in rails减少rails中的url长度
【发布时间】:2012-07-09 08:45:09
【问题描述】:

我有这个表格:

<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>&nbsp</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 %>

一切正常,所有参数都正确传递等,但在我试图显示结果的视图中,我得到一个像这样的巨大 url:

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 => nil”,如railscast 所示 为什么会发生这种情况,我怎样才能将 url 大小减小到“http://localhost:3000/global/data/find”?

编辑:

这是我在 fields_controller 中的查找方法:

  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!我该怎么办?

谢谢:)

【问题讨论】:

    标签: ruby-on-rails url


    【解决方案1】:

    只需将您的方法从 GET 更改为 POST 并相应地更改路由。

    试试

    <%= form_for(:find_field, url: find_field_path , method: :post) do |f| %>
    

    您的路由文件应与请求匹配为 POST。

    【讨论】:

    • 我已经编辑了我的问题,请告诉我如何处理。
    • 函数'find'被调用了吗?或者您是否收到模板丢失错误?
    • 好的,我成功了,只是 f.submit 让它调用了 fields#create :/。但是当我删除它并添加一个 : 时,一切都神奇地起作用了!你知道为什么会这样吗?谢谢你的帮助:)
    猜你喜欢
    • 2014-12-31
    • 1970-01-01
    • 2012-08-06
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多