2011-09-09 24 views
2

我目前使用sunspot_rails gem作为简单的“craigslist”电子商务应用程序,我想通过JQuery Ajax加载搜索结果/排序(而不是页面请求)。然而,我很难得到这个工作,任何想法? JQuery正在为其他插件工作。非常感谢你!Sunspot Solr Rails通过JQuery Ajax搜索/排序?

搜索项控制器动作和排序功能

def search 
    @search = Item.search do 
    fulltext (params[:search]) 
    order_by sort_column, sort_direction 
    end 
    @items = @search.results 
    end 

    def sort_column 
    Item.column_names.include?(params[:sort]) ? params[:sort] : "created_at" 
end 

    def sort_direction 
    %w[asc desc].include?(params[:direction]) ? params[:direction] : "desc" 
    end 

search.js

$("#itemsfeed").html(<%= escape_javascript(render('feed')) %>); 

项目助手

def sortable(column, title = nil) 
    title ||= column.titleize 
    css_class = column == sort_column ? "current #{sort_direction}" : nil 
    direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc" 
    link_to title, params.merge(:sort => column, :direction => direction, :page => nil), {:class => css_class} 
    end 

search.html.erb

<script> 
$(document).ready(function() { 
$("#itemsfeed th a").live("click", function() { 
    $.getScript(this.href); 
return false; 
    }); 
}); 
</script> 

<% form_tag search_items_path, :method => 'get' do %> 
    <div class='searchbox'> 
<%= text_area_tag :search, params[:search], :id => 'tags', :cols => '40', :rows => '1' %> 
     </div> 
    <%= submit_tag "Search", :name => nil, :class => 'submitbtn' %> 
    <br/> 
    <div id='itemsfeed'><%= render 'feed' %></div> 
<% end %> 

feed.html.erb

<tr> 
<th><%= sortable "price" %></th> 
<th><%= sortable "created_at" %></th> 
</tr> 


<%= hidden_field_tag :direction, params[:direction] %> 
<%= hidden_field_tag :sort, params[:sort] %> 

<ol><%= render :partial => 'shared/item', :collection => @items %></ol> 
+0

发布routes.rb的相关部分。 search.html.erb指定动词/方法“get”。也许你的路线只回应“发布”?你的日志告诉你什么?它甚至收到请求吗? – pduey

+0

我需要做些什么:remote => true?和分拣作品它只是不是ajaxy,也是路线搜索:资源:项目做 收集做 得到:搜索 结束 结束 – ahuang7

回答

1

是的,你需要有:remote => true@form_tag,如果你想提交要通过AJAX实现。