开发者

Rails/ajax - whitespace and request.raw_post

I am starting to learn Ajax with rails. I have a catalog index page with a text_field_tag querying db if it finds similar "section" results.

Index.html.erb

<h1>Catalogs</h1>

<label>Search by Section:</label>
<%=text_field_tag :section %>
<%= observe_field(:section, 
                  :frequency=> 0.1, 
开发者_JS百科                  :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

Question:

request.raw_post renders something like:

xml&authenticity_token=tgtxV3knlPvrJqT9qazs4BIcKYeFy2hGDIrQxVUTvFM%3D 

so I use

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

to get the section query ("xml"). It works, however how can I do if the query have a whitespace. (like "Open Source") In fact, I have Open Source sections in my db, but request.raw_post.split(/&/).first renders Open%20Source. How can I manage this? Did I have to use a full text search engine to achieve it or there is another way?

Thanks a lot for your explanation!


Look over your logs, in them you will see the post and the params being passed. You should not need to do your own query-string splitting. You should be able to use params[:section] to get the post data.

As your comment implies, there's something missing. Your observe_field needs to tell the Rails helper what to do. Check out: http://apidock.com/rails/ActionView/Helpers/PrototypeHelper/observe_field. Anyhow, you'll want to do something like:

observe_field(... # lots of parameters :with => 'section' )

And that should give you params[:section].

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜