Rails从输入表单中删除引号的问题

时间:2010-11-23 09:30:00

标签: ruby-on-rails forms submit quotes strip

我正在为我的Rails编写一个搜索表单(2.3.9但我已经检查过这个问题也存在于3.0.3)应用程序。 问题是Rails正在从用户输入中删除引号。 我想给用户写信的可能性:

  • “ruby on rails”:这将搜索整个字符串的全文
  • ruby​​ on rails:这将搜索包含所有这三个字的文章

但在我的控制器中,对于这两种情况,我只得到一个字符串:

Processing NewsController#index (for 127.0.0.1 at 2010-11-23 10:23:15) [GET]
  Parameters: {"action"=>"index", "controller"=>"news", "search"=>{"category"=>"", "news_agency"=>"", "fullsearch"=>"ruby on rails", "order"=>""}}

有没有选项可以跳过这个剥离引号?

注: 当用户为搜索字符串的两侧添加空格时,例如: '“ruby on rails”'字符串将被正确发送:

Processing NewsController#index (for 127.0.0.1 at 2010-11-23 10:23:15) [GET]
  Parameters: {"action"=>"index", "controller"=>"news", "search"=>{"category"=>"", "news_agency"=>"", "fullsearch"=>" \"ruby on rails\" ", "order"=>""}}

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

表单中的所有参数将作为字符串到达​​控制器,rails通过activerecord将值推送到数据库,因此它知道是否将“5”发送到db中的整数列,它应该将其更改为5。但对于搜索字符串,你需要做一些自己的魔法。像这样:

irb(main):001:0> "ruby on rails".split(" ")
=> ["ruby", "on", "rails"]

提供一系列搜索字词来搜索每个单独的字词。

irb(main):006:0> terms
=> ["ruby", "on", "rails"]
irb(main):013:0> terms.each do |term|
irb(main):014:1* puts "this sentence on rails".match(term)
irb(main):015:1> end
nil
on
rails
=> ["ruby", "on", "rails"]

答案 2 :(得分:0)

我无法在我的Rails 2.3.5中重现它。你确定它不是剥离引号的浏览器吗?此外,如果您在搜索表单中使用POST,是否会发生这种情况?