Ruby on rails ActionController::控制器#索引中的未筛选参数无法将未经允许的参数转换为哈希值以重定向到

Ruby on rails ActionController::控制器#索引中的未筛选参数无法将未经允许的参数转换为哈希值以重定向到,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,当我尝试访问时,我得到了 ActionController::MoviesController#索引中未筛选的参数 无法将未经允许的参数转换为重定向到“”时的哈希错误 def索引 @所有电影分级=电影。电影分级 @ratings=Hash.new() #过滤电影 如果参数[:额定值]!=无 @选中的_评级=参数[:评级] elsif会话[:评级]!=无 #如果执行了除过滤以外的任何其他请求,则获取上一个请求期间存储在会话中的评级 @选中的_评级=会话[:评级] 其他的 #首先检查所有评级 @al

当我尝试访问时,我得到了

ActionController::MoviesController#索引中未筛选的参数 无法将未经允许的参数转换为重定向到“”时的哈希错误

def索引
@所有电影分级=电影。电影分级
@ratings=Hash.new()
#过滤电影
如果参数[:额定值]!=无
@选中的_评级=参数[:评级]
elsif会话[:评级]!=无
#如果执行了除过滤以外的任何其他请求,则获取上一个请求期间存储在会话中的评级
@选中的_评级=会话[:评级]
其他的
#首先检查所有评级
@all_ratings_hash=hash[@all_ratings.map{| rating_name |[rating_name,1]}]
@选中\u评级=@所有\u评级\u哈希
结束
#存储分级过滤器的状态,以便在将来的任何请求中记住
会话[:分级]=@已检查分级
会话[:评级]=会话[:评级]
#电影分类
if(参数[:在列上排序]).nil?
#如果执行了除排序以外的任何其他请求,则取上次请求期间会话中存储的排序_列
@列要排序=会话[:在列上排序]
其他的
@列要排序=参数[:在列上排序]
结束
#存储排序状态以备将来任何请求时记住
会话[:在列上排序]=@列要排序
#索引视图的布尔排序
@按标题排序=@列要排序=='title'
@按日期排序=@列要排序==“发布日期”
@movies=Movie.where(评级:@checked\u ratings.keys)。顺序(@column\u to\u be\u sorted)
if(params[:sort_on_a_column].nil?和!(会话[:sort_on_a_column].nil?)或(params[:ratings].nil?和!(会话[:ratings].nil?)
闪光,保持
重定向到电影路径(在列上排序:@column\u到被排序,分级:@checked\u分级)
结束
结束

我咨询过,但是那些方法对我不起作用,我正在使用Rails 6.1.3.1

你的
参数是什么样子的?如果
params[:ratings]
params[:sort_on_a_列]
是一个散列,则如果不使用或绕过类似于
to_unsafe_h
的安全检查,则无法将其路径传递到
movies_路径。是的,params[:ratings]是一个散列。我们不能在旧版本的rails tho中对它们进行路径设置吗?我尝试了“重定向到电影路径(排序列:@column\u to\u be\u sorted,评级:@checked\u ratings.permit!)”和重定向到电影路径(排序列:@column\u to\u sorted,评级:@checked\u ratings.to\u unsafe\h)”,但这两种方法都不起作用