2010-11-23 2 views
0

Я пишу форму поиска для своих Rails (2.3.9, но я проверял, что эта проблема существует и в приложении 3.0.3). Проблема заключается в том, что 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 ?

Примечание: Когда пользователь добавляет пробелы для обеих сторон для строки поиска, например: «„Рубин на рельсы“» строка будет некорректной отправлено:

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 из форма будет поступать на контроллер в виде строк, а рельсы передают значения в базу данных с помощью 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 для формы поиска?