2017-07-07 63 views
0

这可能真的很愚蠢,但是,我不明白为什么会发生这种情况。 我有这个方法。未定义的方法'许可'为:像:符号

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

然后我调用这样的方法调用它(默认的脚手架创建方法)。

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

我的路线是

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

我缺少什么?

+0

我们需要看到您的控制台日志,它显示了如何为您的请求参数的部分。我现在可以告诉我的是,我发现它真的很奇怪'params.fetch(:vote,:like,:hate,:movie_id,{})'通常我们只抓取一个或两个符号,已经有4个了,完全一样 –

+0

尝试'params.permit(:like,:hate,:movie_id)' –

回答

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

该部分是不好,如果你需要获得分离范围的参数,你需要做这样的事情。

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 

但我相信,以下是你需要什么

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

确实,我的错误是我取得了我允许的相同参数,所以这造成了冲突。 –

+0

已修复!非常感谢 –

+0

@ Dinos_12345欢迎! –