0
我想弄清楚如何做一个数据表的过滤器,所以我的想法在临时是有一个<option>
适用于一个参数的URL,和basis
的表改变,但是,我的控制器似乎忽略了参数Rails路由与参数 - 控制器忽略参数
def index
@steam_games = SteamGame.all
@steam_games = SteamGame.where("#{params[:genre]} = ANY (genres)") if params[:genre].present?
respond_to do |format|
format.html
format.json { render json: SteamGamesDatatable.new(view_context, @steam_games) }
end
end
是我能想到应用它的最佳方式。
为了测试我还在 get '/steam_games/:genre', to: 'steam_games_controller#index'
中添加了路由,即使我希望URL不会改变。
我的调试器显示
--- !ruby/object:ActionController::Parameters
parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
genre: indie
controller: steam_games
action: index
permitted: false
负载我看到Parameters: {"genre"=>"indie"}
在控制台中。
为什么这不起作用?要注意genres
是一个ARRAY,这就是为什么我有这样的where
,但是这不应该改变参数绑定。
(不确定链接reg。this还有什么)。
这是可能的Datatables胜过控制器的index
,但我不这么认为,因为我把它列入清单。
我做了改变(这是有道理的,我也没有在允许范围内)。但是现在数组不断被返回为空。 “SteamGame.where(”'Indie'= ANY(genres)“)。count'作品,我看不到输出,但我认为是 SteamGame.where(”'#{steam_game_params [:genre]}' = ANY(流派)“)如果steam_game_params [:流派] .present?' 是否提供了类似的查询? – DNorthrup
我不确定我完全理解你的新问题,“是否提出类似的查询?” ...你添加了强烈的参数后,你的错误是否改变了?如果'.count'方法有效,那么你应该检查你的参数实际上是否存在。使用'puts SteamGame.where(“#{steam_game_params [:genre]} = ANY(流派)”)'并检查您的输出。 –
我会尝试输出。把steam_params似乎已经做到了,所以它注意到params,但它不断返回'nil' - 但是如果我要在Console中对同一'genre'进行查询,我会得到一个结果。 – DNorthrup