Kostas Andrianos
Kostas Andrianos

Reputation: 1619

undefined method `permit' for :like:Symbol

This is probably really stupid but, I don't get why this happens. I have this method.

 def vote_params
    params.fetch(:vote, :like, :hate, :movie_id, {}).permit(:like, :hate, :movie_id)
 end

And I call the method that calls it (a default scaffold create method) like this.

<td><%= link_to Vote.where(movie_id: movie.id, like: true).count, upvote_path( :like => true, :hate => false, :movie_id => movie.id) %></td>

My route is

  get 'vote/movies' => 'votes#create', as: :upvote

What am I missing?

Upvotes: 0

Views: 163

Answers (1)

Ramon Marques
Ramon Marques

Reputation: 3264

params.fetch(:vote, :like, :hate, :movie_id, {})

that part is not good, if you need to get parameters of separated scopes you need to do something like this.

def vote_params
  params.require('vote').permit(:parameter1, :parameter2)
end

def like_params
  params.require('like').permit(:parameter1, :parameter2)
end

def hate_params
  params.require('hate').permit(:parameter1, :parameter2)
end

But I believe that the following is what you need

def vote_params
   params.permit(:like, :hate, :movie_id)
end

Upvotes: 2

Related Questions