我觉得我在这里缺少一些非常简单的东西。我在Rails 4应用程序上有一个搜索表单,它接受输入的关键字,然后需要将它们附加到外部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/”。
如何以正确的格式从附加到网址的表单中获取输入的参数?谢谢!
答案 0 :(得分:0)
我建议您使用'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 Hack点击提交按钮/按回车后改变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;"}