2010-11-23 71 views
0

我正在爲我的Rails(2.3.9,但我已檢查到此問題也存在於3.0.3)應用程序中寫入搜索表單。 問題是Rails正在從用戶輸入中剝去引號。 我想給用戶的可能性寫: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"=>""}} 

是否有任何選項來跳過此剝離QUOT標誌?

備註: 當用戶添加空格兩側例如用於搜索字符串: 「‘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"=>""}} 

回答

0

所有PARAMS從表單將作爲字符串到達​​控制器,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"] 
+0

對不起,我想我誤解了問題的情況下。 – 2010-11-24 00:41:49

0

我不能在我的Rails 2.3.5中重現它。你確定它不是瀏覽器是剝去引號?另外,如果您使用POST作爲搜索表單,它會發生嗎?