Ruby on Rails
Wednesday, May 22, 2019
I am trying to Querying Multiple Database table and display results in races index.html.erb
ActiveRecord::Schema.define(version: 2019_05_21_043953) do
create_table "days", force: :cascade do |t|
t.date "day"
t.integer "season_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["season_id"], name: "index_days_on_season_id"
end
create_table "races", force: :cascade do |t|
t.boolean "display"
t.text "racename"
t.text "class"
t.integer "season_id"
t.integer "day_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["day_id"], name: "index_races_on_day_id"
t.index ["season_id"], name: "index_races_on_season_id"
end
create_table "seasons", force: :cascade do |t|
t.integer "year"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
A typical query in rails console --sandbox Querying all the races for that day
SELECT day,class,racename FROM RACES
INNER JOIN DAYS on days.id = races.day_id
INNER JOIN SEASONS on days.season_id = seasons.id
WHERE days.id = '46'
"2019-04-20" "Pee Wee" "Pee Wee Div 2"
"2019-04-20" "Pee Wee" "Pee Wee Div 1"
"2019-04-20" "Juniors" "Juniors Div 2 Shilo Tocher Cup"
"2019-04-20" "Juniors" "Juniors Div 1 Gavin Tavendale Cup"
"2019-04-20" "Solo" "Solo's Robin McKinnon Plate"
"2019-04-20" "Side Cars" "Sidecars Tony Schafer Cup"
I have this as the race model
class Race < ApplicationRecord
belongs_to :season
belongs_to :day
class << self
def with_season(seasons)
joins(:seasons).where(seasons: {id: seasons})
end
def with_day(days)
joins(:days).where(days: {id: days})
end
def with_race(races)
joins(:races).where(races: {id: races})
end
end
end
I want to select the Season ,the day and the race
with something like this in races index.html.erb
<div class="control-group">
<%= f.label :day_id , class: 'control-label' %>
<div class='controls'>
<%= collection_select(:race, :day_id, Day.all, :id, :day, {}, {:multiple => false}) %>
</div>
</div>
So far I have this for races index.html.erb
<p id="notice"><%= notice %></p>
<h1>Races</h1>
<table>
<thead>
<tr>
<th>Display</th>
<th>Racename</th>
<th>Class</th>
<th>Season</th>
<th>Day</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
@races = Race.with_season(params[:season_id]).with_day(params[:day_id]).with_race(params[:_id])
<% @races.each do |race| %>
<tr>
<td><%= race.display %></td>
<td><%= race.racename %></td>
<td><%= race.class %></td>
<td><%= race.season %></td>
<td><%= race.day %></td>
<td><%= link_to 'Show', race %></td>
<td><%= link_to 'Edit', edit_race_path(race) %></td>
<td><%= link_to 'Destroy', race, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<br>
<%= link_to 'New Race', new_race_path %>
Any Questions or suggestions just post please
Cheers Dave
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/f0edb9b1-7d29-4e30-bbaf-fa6061744f4f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment