私のジョインテーブルの1つ、私はドロップダウンメニューの選択に基づいて結果をフィルタリングしたいと思います。さらに説明する前に、関連するコードを提供します。ジョイン・テーブルの要素をドロップダウン・メニューで絞り込みます。 (Rails 4)
私は、問題の3つのモデルがあります:
class Scoreboard
has_many :teams, has_many :team_matches
end
class Team
belongs_to Scoreboard
#self reference with the teams to create team_matches.
has_many :first_team, class_name: "TeamMatch", foreign_key: "team_a_id", dependent: :destroy
has_many :team_a, through: :first_team, source: :team_a
has_many :second_team, class_name: "TeamMatch", foreign_key: "team_b_id", dependent: :destroy
has_many :team_b, through: :second_teams, source: :team_b
end
とチームのテーブルを結合です最終モデル:
class Team_Match
belongs_to :team_a, class_name: "Team"
belongs_to :team_b, class_name: "Team"
belongs_to :scoreboard
end
チームは、インデックス表示のためのコントローラーコードと一致します:
class TeamMatchesController < ApplicationController
require 'will_paginate/array'
def index
@selected = true
@scoreboard = Scoreboard.find(params[:scoreboard_id])
@teams = @scoreboard.teams
@matches = @scoreboard.team_matches.order("match_date DESC").paginate(page: params[:page], per_page: 5)
end
end
インデックスページビュー:
<h2 class="team-matches-header">TEAM MATCHES</h2>
<% if manager_or_owner?(@scoreboard, current_user) %>
<%= link_to "Add Matches", new_scoreboard_team_match_path(@scoreboard), class: "btn btn-primary" %>
<%= link_to "Clear Matches", deletematches_scoreboard_path(@scoreboard),method: :delete, class: "btn btn-danger", :data => {:confirm => "Are you absolutely sure you want to delete all matches?"} %>
<% end %>
<%= form_tag(scoreboard_team_matches_path, :method => "get", id: "match-search-form", autocomplete: "off") do %>
<div class="row new-member-field">
<div class="col-xs-12 col-sm-6">
<%= select_tag "teams", options_from_collection_for_select(@teams, "id", "name"), prompt: "Select something", class:"form-control" %>
<%= submit_tag 'Filter' %>
</div>
</div>
<% end %>
<div class="match-list">
<%= render 'match_list' %>
</div>
一致リストの一部
<% if @matches.present? %>
<% @matches.each do |game| %>
<div class="row match-div clearfix" id="match_<%= game.id %>">
<div class="col-xs-12 match-column">
<div class="facing-teams">
<div class="first-team">
<%= game.team_a.name %>
</div>
<div class="second-team">
<%= game.team_b.name %>
</div>
</div>
</div>
</div>
<% end %>
<% end %>
<div class="row">
<div class="col-xs-12 new-member-pages">
<%= will_paginate @matches %>
</div>
</div>
これまでのところ、チームはインデックスページと一致した上で、私はドロップダウンメニューの選択を置くことができましたチームのリスト私が抱えている問題は、それを機能的にする方法です。ドロップダウン選択からチームを提出すると、:team_a_id
または:team_b_id
が選択されたチームのIDと一致するMatchオブジェクト(@matches)のリストを表示したいと思います。それをどうやってやりますか?
これは素晴らしいです。ありがとう。 – kpaul