Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将GET请求重写为不同的格式_Ruby On Rails_Forms_Get_Request - Fatal编程技术网

Ruby on rails 将GET请求重写为不同的格式

Ruby on rails 将GET请求重写为不同的格式,ruby-on-rails,forms,get,request,Ruby On Rails,Forms,Get,Request,我有一个搜索表单,它接受一个参数并将GET请求发布到一个外部URL .form-group.form-group-sm %form{"accept-charset" => "UTF-8", :action => "http://example.com/search/node", :method => "get"} %input.form-control{name: 'search_query', placeholder: "Search site..."

我有一个搜索表单,它接受一个参数并将GET请求发布到一个外部URL

  .form-group.form-group-sm
    %form{"accept-charset" => "UTF-8", :action => "http://example.com/search/node", :method => "get"}
      %input.form-control{name: 'search_query', placeholder: "Search site...", :type => "text"}
      %button{name: nil}
        %span.glyphicon.glyphicon-search
问题是,外部站点需要GET请求采用以下格式:

但书面形式会生成以下URL:


任何人都可以分享我如何修改GET请求以将其格式化为正确的URL的技巧吗?谢谢

您可以编写一个JS函数,该函数将在表单提交时调用。在该函数中,您可以按所需格式将参数附加到GET URL,然后发出GET请求。

我会向内部URL发出请求,然后通过本地控制器动作重定向到外部URL。这也有助于跟踪搜索

创建示例\u控制器。添加“搜索”操作。处理参数解析和重定向。将示例#搜索添加到路由文件中

Linkedin、Yelp、Google等网站将对所有外部链接执行此操作

一些代码可以帮助你

# app/controllers/yahoo_controller.rb
class YahooController < ApplicationController

  def search
    redirect_to escaped_url(:p => params[:q])
  end

  private

  def escaped_url(params = {})
    uri = URI('https://search.yahoo.com/search')
    uri.query = params.to_query
    uri.to_s
  end

end
那景色呢

= form_tag(yahoo_search_path, :method => :get) do
  = text_field_tag :q, params[:q]
  = submit_tag "Search", :name => nil
= form_tag(yahoo_search_path, :method => :get) do
  = text_field_tag :q, params[:q]
  = submit_tag "Search", :name => nil