Rails / ajax - пробел и request.raw_post - PullRequest
0 голосов
/ 27 марта 2011

Я начинаю изучать Ajax с рельсами. У меня есть страница индекса каталога с text_field_tag, запрашивающей БД, если он находит похожие результаты «раздела».

index.html.erb

<h1>Catalogs</h1>

<label>Search by Section:</label>
<%=text_field_tag :section %>
<%= observe_field(:section, 
                  :frequency=> 0.1, 
                  :update=> "article_list", 
                  :url=>{ :action => :get_article_list }) %>
<div id="article_list"></div>

Catalogs_controller.rb

def index
end

def get_article_list
  @section = request.raw_post.split(/&/).first
  @catalogList = "<ol>"
  Catalog.find(:all, :conditions => ["section = ?", @section]).each do |catalog|
    @catalogList += "<li><a href=\"" + catalog.url + "\">" + catalog.title + "</a></li>"
  end
  @catalogList += "</ol>"
   render :text => @catalogList
end

Вопрос:

request.raw_post отображает что-то вроде:

xml&authenticity_token=tgtxV3knlPvrJqT9qazs4BIcKYeFy2hGDIrQxVUTvFM%3D 

поэтому я использую

request.raw_post.split(/&/).first 

чтобы получить запрос раздела ("xml"). Это работает, однако, как я могу это сделать, если в запросе есть пробел. (например, «Открытый исходный код») На самом деле, в моей базе данных есть разделы с открытым исходным кодом, но request.raw_post.split (/ & /). сначала отображает Open% 20Source. Как я могу справиться с этим? Нужно ли было использовать полнотекстовую поисковую систему, чтобы достичь этого, или есть другой способ?

Большое спасибо за ваше объяснение!

1 Ответ

1 голос
/ 27 марта 2011

Просмотрите ваши логи, в них вы увидите сообщение и передаваемые параметры.Вам не нужно делать собственное разбиение строки запроса.Вы должны иметь возможность использовать params [: section] для получения данных поста.

Как видно из вашего комментария, чего-то не хватает.Ваше поле наблюдения должно указывать помощнику Rails, что делать.Проверьте: http://apidock.com/rails/ActionView/Helpers/PrototypeHelper/observe_field. В любом случае, вы захотите сделать что-то вроде:

наблюдаемое поле (... # много параметров: with => 'section')

это должно дать вам params[:section].

...