私はデータテーブルのフィルタを行う方法を理解しようとしていますので、私の考えでは、<option>
にURLにパラメータを適用し、basis
変更するテーブルには、しかし、私のコントローラは、私はそれを適用するために考えることができる最善の方法であるパラメータParamsを使用した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
を無視しているようです。
テストするには、URLを変更しない場合でも、 get '/steam_games/:genre', to: 'steam_games_controller#index'
をルートに追加しました。
私のデバッガは、私は、コンソールでParameters: {"genre"=>"indie"}
を参照してください負荷ON
--- !ruby/object:ActionController::Parameters
parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
genre: indie
controller: steam_games
action: index
permitted: false
を示しています。
なぜこれが機能していないのですか? genres
はARRAYなので、私はwhere
をそのように持っていますが、パラメータバインドを変更してはいけません。
(これ以外に何かを登録することはわかりません)。
可能性がありますDatatablesはコントローラのindex
を破っていますが、私はそれをリストにフィードしてから信じていません。
私は変更を行いました(それは意味がありますが、私はそれも許可されませんでした)。しかし今、アレイは空に戻っています。 (SteamGame.where( "'' Indie '= ANY(genres)」)。count'が動作し、出力が見えませんが、私は仮定しています SteamGame.where("'#{steam_game_params [:genre]} ' = ANY(ジャンル) ")もしsteam_game_params [:genre] .present? ' 類似のクエリを入力していますか? – DNorthrup
私はあなたの新しい質問を完全に理解していません。「似たような質問をしていますか? ...強力なパラメータを追加してからエラーが変更されましたか? '.count'メソッドがうまくいけば、あなたのパラメータは実際にそこにあるのを確認する必要があります。 '' SteamGame.where( "#{steam_game_params [:genre]} = ANY(genres)") 'を入れ、出力を確認してください。 –
出力を試してみます。 steam_paramsを置くことで、paramsに気付くようになったようですが、常にnilで返されます。しかし、Consoleで同じgenreのクエリを実行すると結果が得られます。 – DNorthrup