私のアプリにはダッシュボードがあり、ユーザはデータベースから項目を表示したりフィルタリングしたりすることができます。現在私のコントローラはの配列に基づいてReport
のすべてのレコードを選択します。Railsでドロップダウンリストとajaxを使ってデータをフィルタリングする方法
ダッシュボードインデックスビューでdashboard_controller.rbのindexアクション
@latest_report = Report.where.not(:assigned_user_id => nil).where(:assigned_user_id => @assigned_user_ids).where(reporting_date: Report.select('MAX(reporting_date)')).order(:assigned_user_id)
私は、ユーザーがall
または特定assigned_user_id
のどちらかを選択することができselect_tag
を持っています。 select_tag
は@employees
インスタンス変数から値をとります。この変数には利用可能な選択肢があります。assigned_user_ids
です。私は今、何をしたいか
<%= select_tag "teams", options_from_collection_for_select(@employees, "assigned_user_id", "full_name"), :include_blank => 'All' %>
は、アプリは、次の手順を実行するように、この時点でAJAXを含めることです
index.html.erb:
- ユーザーを選択した場合特定の
assigned_user_id
フィルタ@latest_report
この値で、それをajax経由でレンダリングします - ユーザが
"All"
フィルタ@latest_report
をすべて利用可能に選択した場合assigned_user_idsをajax経由でレンダリングする
どうすれば(宝石を使わずに)これを達成できますか?
UPDATE は、私はそれはいくつかのlink_to
と専用route
で動作させることができました。しかし、私はselect_tag
を使ってこの問題を解決するのは混乱しています(これは、私の経路にはajax経由でレンダリングされません)。また、 "All"を選択するオプションもあります。
レポート用の部分を作成し、js形式でajaxを要求し、部分応答を成功応答でレンダリングすることができます –
これはselect_tagの代わりにlink_toがある場合に機能します。しかし、私はどのようにselect_tagとオプション "All"でこれを達成するのか分かりません。手伝ってくれる? – Oliver