将表单输入附加到外部 URL post
Append form input to external URL post
我觉得我在这里遗漏了一些非常简单的东西。我在 Rails 4 应用程序上有一个搜索表单,它接受输入的关键字,然后需要将它们附加到外部 URL。
如果输入的关键词是:"banana orange"
那么所需的 URL 将是:http://example.com/search/node/banana%20%orange
这是我在 HAML 中的当前表单:
.form-group.form-group-sm
%form{"accept-charset" => "UTF-8", :action => "http://example.com/search/node/", :method => "post"}
%input.form-control{placeholder: "Search site...", :type => "text"}
%input.form-control{:type => "submit"}
当我点击提交时,我被重定向到“http://example.com/search/node/”。
如何从附加到 URL 的表单中以正确的格式获取输入的参数?谢谢!
我建议您为此使用 'GET',而不是 'POST'。因为搜索动作主要是读取数据,并没有改变任何数据。
因此你想改变:
%form{"accept-charset" => "UTF-8", :action => "http://example.com/search/node/", :method => "post"}
进入
%form{"accept-charset" => "UTF-8", :action => "http://example.com/search/node/", :method => "get"}
在您的控制器中,您通过
访问banana%20orange
def search
puts params[:search_query]
# => this will show you "banana orange"
end
只需确保将 :search_query
更改为您在路由中传递的名称:
# routes.rb
# I.E you have the following
get '/search/node/:search_query' => 'controller_name#action_name'
相应地更改上面的 controller_name 和 action_name。
更新:
你也想改变
%input.form-control{placeholder: "Search site...", :type => "text"}
进入
%input.form-control{name: 'search_query', placeholder: "Search site...", :type => "text"}
或者我更喜欢:
= text_field_tag :search_query, placeholder: "Search site...", class: 'form-control'
更新
点击提交按钮/按回车后 Javascript 更改 URL 的小技巧(我想不出任何不涉及 JS 的方法来解决这个问题):
%form{"accept-charset" => "UTF-8", :action => "http://example.com/search/node/", :method => "get", onsubmit: "window.location.href=$(this).attr('action') + $('input[name=search-query]').val(); return false;"}
我觉得我在这里遗漏了一些非常简单的东西。我在 Rails 4 应用程序上有一个搜索表单,它接受输入的关键字,然后需要将它们附加到外部 URL。
如果输入的关键词是:"banana orange"
那么所需的 URL 将是:http://example.com/search/node/banana%20%orange
这是我在 HAML 中的当前表单:
.form-group.form-group-sm
%form{"accept-charset" => "UTF-8", :action => "http://example.com/search/node/", :method => "post"}
%input.form-control{placeholder: "Search site...", :type => "text"}
%input.form-control{:type => "submit"}
当我点击提交时,我被重定向到“http://example.com/search/node/”。
如何从附加到 URL 的表单中以正确的格式获取输入的参数?谢谢!
我建议您为此使用 'GET',而不是 'POST'。因为搜索动作主要是读取数据,并没有改变任何数据。
因此你想改变:
%form{"accept-charset" => "UTF-8", :action => "http://example.com/search/node/", :method => "post"}
进入
%form{"accept-charset" => "UTF-8", :action => "http://example.com/search/node/", :method => "get"}
在您的控制器中,您通过
访问banana%20orange
def search
puts params[:search_query]
# => this will show you "banana orange"
end
只需确保将 :search_query
更改为您在路由中传递的名称:
# routes.rb
# I.E you have the following
get '/search/node/:search_query' => 'controller_name#action_name'
相应地更改上面的 controller_name 和 action_name。
更新:
你也想改变
%input.form-control{placeholder: "Search site...", :type => "text"}
进入
%input.form-control{name: 'search_query', placeholder: "Search site...", :type => "text"}
或者我更喜欢:
= text_field_tag :search_query, placeholder: "Search site...", class: 'form-control'
更新
点击提交按钮/按回车后 Javascript 更改 URL 的小技巧(我想不出任何不涉及 JS 的方法来解决这个问题):
%form{"accept-charset" => "UTF-8", :action => "http://example.com/search/node/", :method => "get", onsubmit: "window.location.href=$(this).attr('action') + $('input[name=search-query]').val(); return false;"}