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