Rails Associations -


i have 2 tables, movies , likes. movie has_many :likes, dependent: :destroy, foreign_key: "movie_id" , belongs_to :movie

in likes controller there 2 actions: uplikes (where :vote=>1) , dislikes (where :vote=>2)

in movies/show.html.erb show amount of uplikes , dislikes movie has such :

  • view show.html.erb

<%= @uplikes.size %>

<%= @dislikes.size %>

  • controller def show

@uplikes = like.where(:movie_id => params[:id], :vote => '1')

@dislikes = like.where(:movie_id => params[:id], :vote => '2')

this works fine. have problems displaying amount of dislikes , uplikes of movie in index action when calling movies.each

i have pasted above controller code def show action def index action , changed params[:id] params[:movie_id]

but when call

<%= @uplikes.size %>

<%= @dislikes.size %>

to view, displays 0

if rid of :movie_id => params[:id], in controller, shows number of uplikes , dislikes movies, not specific one.

anyone have answer this?

thanks

in index iterating on (or perhaps subset due pagination) movies, correct? naive implementation

in controller

def index    @movies = movie.all  end  

in index.html.erb

   <% @movies.each | movie |             uplikes = movie.likes.where(vote: 1).count            dislikes = movie.likes.where(vote: 2).count     %>         ... output logic here ...    <% end %> 

or following

in movie.rb

 has_many :uplikes, -> {where vote: 1 }, class_name: 'like'  has_many :dislikes, -> {where vote: 2}, class_name: 'like' 

then can use movie.uplikes.count or movie.dislikes.count in views.


Comments

Popular posts from this blog

plot - Remove Objects from Legend When You Have Also Used Fit, Matlab -

java - Why does my date parsing return a weird date? -

Need help in packaging app using TideSDK on Windows -