Rails / ajax - 空格和request.raw_post

时间:2011-03-26 22:38:18

标签: ruby-on-rails ajax xmlhttprequest prototypejs

我开始用rails学习Ajax。 我有一个目录索引页面,如果找到类似的“section”结果,则会查询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(/&amp; /)。首先渲染Open%20Source。我该怎么办呢?我是否必须使用全文搜索引擎来实现它,还是有另一种方式?

非常感谢您的解释!

1 个答案:

答案 0 :(得分:1)

查看您的日志,在其中您将看到帖子和参数被传递。您不应该进行自己的查询字符串拆分。您应该能够使用params [:section]来获取发布数据。

正如你的评论所暗示的那样,缺少一些东西。您的observe_field需要告诉Rails帮助程序该做什么。退房:http://apidock.com/rails/ActionView/Helpers/PrototypeHelper/observe_field。无论如何,你会想做类似的事情:

observe_field(......#很多参数    :with =&gt; '部分'   )

这应该会给你params[:section]