2011-09-09 8 views
2

私は現在、単純な 'craigslist' eコマースアプリにsunspot_rails gemを使用しています。ページリクエストではなく、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

私はする必要があります:リモート=>本当ですか?検索のルートも コレクションdo get:検索 end end – ahuang7

答えて

1

はい、あなたが提出するには、AJAXを介して行うことにしたい場合は、あなたの@form_tag:remote => trueを持っている必要があります。

関連する問題