我正在尝试在我的ruby on rails应用程序中创建某种搜索,我想添加ajax支持。我想当用户在搜索框中输入一个单词时,ajax会自动生成结果。我搜索了几乎所有的互联网,我找不到以下问题的答案:
当我输入文本区域时没有任何反应。这就像ajax根本不起作用。 Tre问题出现在observe_field中,它应该观察我的id ='query',但它似乎没有做任何事情
我正在使用Prototype 1.6.1和最新版本的rails。 我写的代码是:
查看器:
<form name="sform" action="" style="display:inline;">
<label for="item_name">Filter on Property No : </label>
<%= text_field_tag(:query, params['query'], :size => 10, :id => 'query' ) %>
</form>
<%= image_tag("/images/system/blue_small.gif",
:align => "absmiddle",
:border => 0,
:id => "spinner",
:style =>"display: none;" ) %>
</p>
<%= observe_field 'query', :frequency => 1,
:update => 'table',
:before => "$('#spinner').show()",
:success => "$('#spinner').hide()",
:url => {:action => 'list'},
:with => 'query' %>
<div id="table">
<%= render :partial => "items_list" %>
</div>
我的控制器是:
def list
sort = case params['sort']
when "Title" then "title"
when "address" then "address"
when "close date" then "close_date"
when "property_no_reverse" then "property_no DESC"
when "address_reverse" then "address DESC"
when "close_date_reverse" then "close_date DESC"
end
conditions = ["title LIKE ?", "%#{params[:query]}%"] unless params[:query].nil?
@total = Message.count(:conditions => conditions)
@accounts = Message.paginate :page => params[:page], :per_page => 10, :order => sort, :conditions => conditions
if request.xml_http_request?
render :partial => "items_list", :layout => false
end
end
我非常感谢能得到的任何帮助!
答案 0 :(得分:0)
你说你使用最新版本的Rails,如果那是Rails 3.0.0然后observe_field和他们做javascript的方式肯定是不同的。要么降级到Rails 2.3.8(我不会),学习新方法,要么在Rails 3.0.0中使用旧方法
Rails 3.0.0中的新方法:http://www.simonecarletti.com/blog/2010/06/unobtrusive-javascript-in-rails-3/
Rails 3.0.0中的老方法:http://github.com/rails/prototype_legacy_helper
如果你想要2.3.8我可以告诉你观察场地,请告诉我......