2013-09-30 6 views
6

Nie udało mi się znaleźć niczego, co działa do tej pory, jeśli chodzi o składanie pytań przez liczbę upvotes przy użyciu acts_as_votable gem.acts_as_votable ordering by upvotes

Oto moje upvote i indeksy metody:

def upvote 
    @question = Question.find params[:id] 
    @question.liked_by current_user 
    redirect_to comment_questions_path 
end 

def index 
@comment = Comment.find params[:comment_id] 
@questions = @comment.questions 
end 

i zobaczyć moje pytania:

<%= div_for(question) do %> 
<% if question.votes.size > 0 %> 
<div class="verifiedanswer"> 
<%= question.body %> 
</div> 

<% else %> 
<div class="answercontainer2"> 
<%= question.body %> 
</div> 
<% end %> 

Co należy umieścić w widoku i kontrolera, aby uczynić tę pracę?

Odpowiedz

11

Ten konkretny klejnot ma również buforowanie migracji.

https://github.com/ryanto/acts_as_votable#caching

class AddCachedVotesToPosts < ActiveRecord::Migration 
    def self.up 
    add_column :posts, :cached_votes_total, :integer, :default => 0 
    add_column :posts, :cached_votes_score, :integer, :default => 0 
    add_column :posts, :cached_votes_up, :integer, :default => 0 
    add_column :posts, :cached_votes_down, :integer, :default => 0 
    add_index :posts, :cached_votes_total 
    add_index :posts, :cached_votes_score 
    add_index :posts, :cached_votes_up 
    add_index :posts, :cached_votes_down 

    # Uncomment this line to force caching of existing votes 
    # Post.find_each(&:update_cached_votes) 
    end 

    def self.down 
    remove_column :posts, :cached_votes_total 
    remove_column :posts, :cached_votes_score 
    remove_column :posts, :cached_votes_up 
    remove_column :posts, :cached_votes_down 
    end 
end 

Moja sugestia byłoby stworzenie nowej migracji z kodem próbki i użyć jej do sortowania przeciw.

Po utworzeniu że migracja można sortować na jednej z tych kolumn:

http://guides.rubyonrails.org/active_record_querying.html#ordering

Na przykład:

<% Post.order(:cached_votes_up).each do |post| %> 
    ... html goodness here ... 
<% end %> 

To będzie sortować według liczby głosów w górę.

+0

Przepraszamy, nowe dla szyn i nie wiem, w jaki sposób mogę to wdrożyć w moim przekonaniu. – user2759575

+0

Dodano trochę więcej. HTH –

+0

Niesamowite, dziękuję. – user2759575