将 GET 请求重写为不同的格式
Rewrite GET request into different format
我有一个搜索表单,它接受一个参数并将 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 请求以这种格式出现:
http://example.com/search/node/banana%20%orange
但书面形式生成此 URL:
http://example.com/search/node/?search_query=banana+orange
任何人都可以分享任何关于如何更改 GET 请求以便将其格式化为正确的 URL 的提示吗?谢谢!
您可以编写一个将在提交表单时调用的 JS 函数。在该函数中,您可以将参数附加到您想要的格式的 GET URL,然后发出 GET 请求。
我会向内部 url 发出请求,然后通过本地控制器#action 重定向到外部 url。这也有利于跟踪搜索。
创建example_controller。添加 'search' 操作。处理参数解析和重定向。将 example#search 添加到你的路由文件中。
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
和路线
get :yahoo_search, :to => 'yahoo#search'
和视图
= form_tag(yahoo_search_path, :method => :get) do
= text_field_tag :q, params[:q]
= submit_tag "Search", :name => nil
我有一个搜索表单,它接受一个参数并将 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 请求以这种格式出现:
http://example.com/search/node/banana%20%orange
但书面形式生成此 URL:
http://example.com/search/node/?search_query=banana+orange
任何人都可以分享任何关于如何更改 GET 请求以便将其格式化为正确的 URL 的提示吗?谢谢!
您可以编写一个将在提交表单时调用的 JS 函数。在该函数中,您可以将参数附加到您想要的格式的 GET URL,然后发出 GET 请求。
我会向内部 url 发出请求,然后通过本地控制器#action 重定向到外部 url。这也有利于跟踪搜索。
创建example_controller。添加 'search' 操作。处理参数解析和重定向。将 example#search 添加到你的路由文件中。
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
和路线
get :yahoo_search, :to => 'yahoo#search'
和视图
= form_tag(yahoo_search_path, :method => :get) do
= text_field_tag :q, params[:q]
= submit_tag "Search", :name => nil