2013-09-30 10 views
6

Ich konnte bisher nichts finden, was bei der Bestellung von Fragen nach der Anzahl der Upvotes mit der acts_as_votable gem funktioniert.acts_as_votable Bestellung von upvotes

Hier sind meine upvote und Indexmethoden:

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 

und meine Fragen lesen:

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

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

Was soll ich in der Ansicht setzen und die Steuerung diese Arbeit zu machen?

Antwort

11

Dieses besondere Juwel hat eine Caching-Migration, die Sie auch ausführen können.

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 

Mein Vorschlag eine neue Migration mit dem Beispielcode zu erstellen wäre und dass gegen sortieren verwenden.

Sobald Sie erstellt, dass die Migration, die Sie auf einer dieser Spalten sortieren:

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

Zum Beispiel:

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

Das durch die Anzahl der bis Stimmen sortieren wird.

+0

Sorry, neu zu Schienen und nicht sicher, wie ich dies aus meiner Sicht implementieren würde. – user2759575

+0

Hinzugefügt ein bisschen mehr. HTH –

+0

Super, danke. – user2759575