Ruby on rails 4 Rails 4应允许的未经许可的参数
我有点受不了这个。我相信这很简单,但我还是搞不懂 以下是我的许可方法:Ruby on rails 4 Rails 4应允许的未经许可的参数,ruby-on-rails-4,strong-parameters,Ruby On Rails 4,Strong Parameters,我有点受不了这个。我相信这很简单,但我还是搞不懂 以下是我的许可方法: def post_params params.require(:post).permit(:char_id, :text).merge!(topic_id:params[:topic_id], user_id: current_user.id, ip: request.remote_ip) end 以下是请求路由到的控制器更新方法: def update @post.update(post_params) re
def post_params
params.require(:post).permit(:char_id, :text).merge!(topic_id:params[:topic_id], user_id: current_user.id, ip: request.remote_ip)
end
以下是请求路由到的控制器更新方法:
def update
@post.update(post_params)
respond_to do |format|
format.html { redirect to }
format.json { render partial: "post", locals: {post:@post} }
end
end
这是请求随附的信息。我需要买点东西 但当我在控制台中查看时,我仍然看到:
Unpermitted parameters: id, text, char_id, ip, show_text, posted_at, char, editable, deletable, commentable, user
是工作出了问题还是我错过了什么?我认为合并是个问题。它放错地方了 合并的方式是作用于由
params.require(:post).permit(:char_id, :text)
请尝试以下方法:
def post_params
params.require(:post).merge(user_id: current_user.id, ip: request.remote_ip)).permit({:char_id, :text, topic_id, :user_id, :ip}
end
我相信您已经接近了,请尝试修改您的
post_params
方法,使其如下所示:
def post_params
params.permit(:topic_id)
params.require(:post).permit(:text, :char => [:id]).merge({ip: request.remote_ip, user: current_user})
end
最大的区别在于我们传递了
合并
一个散列,但也指定了我们想要从:char
中得到什么,它嵌套在:post
中,以及白名单:topic_id
(它不是:post
的一部分)。您能发布完整的代码,并包含提交的参数的完整日志吗?还有,您希望发生什么,因为那个permit方法非常迟钝。我已经将一个要点与我得到的完整参数散列相链接。@sevensacat我已经用controller方法代码更新了这个问题。如你所见,这很简单。如果很简单,我就不会问你更多的信息了。我仍然不知道您希望从许可证方法中得到什么。更新了另一个要点。尝试将合并放在许可证之前,但不起作用。我也试着把他们分开,但也没用。谢谢,成功了。除了我真的不需要那种:char
嵌套。我确实需要:char\u id
,如果:char\u id
在:post
中,那么它显然就在post
的内部,你应该能够用:char\u id
替换:char=>[:id]
,并且都设置好了。