#目的
ブラウザで文字に対してのリンクではなくある程度大きな範囲全体にdo
をつかってlink_toを掛ける
今回は試合(Gameモデル)を一覧表するページ(index)や詳細ページ(show)でその試合に応じたゲームカードとして表示したいのでパーシャルで組立ている。
そのカード内の何処をクリックしてもその詳細ページにとばしたい処理
#ソースコード
before
_game_card.html.erb
<% if games.empty? %>
<p class="text-center my-3">試合がありません</p>
<% else %><!-- 条件1-->
<% games.each do |game| %>
<div class="card my-3">
<div class="row m-2">
<%= link_to game, class: "row col-12 pb-2 pt-1" do %>
<div class="col-6 "><%= game.fight_time.try(:strftime, "%Y年%-m月%-d日(#{%w(日 月 火 水 木 金 土)[game.created_at.wday]}) %H:%M") %></div>
<div class="mx-auto text-center col-6 text5"><%= game.tennis_court.prefecture %></div>
<% end %>
</div>
</div>
<% else %><!-- 条件2-->
<!-- 条件2にあわせて少し変更した、上と似たようなコード-->
<% end %>
この状態だとlink_to, do -- end で囲った、日付、場所にか関する領域しかリンクになっていないので
この試合カード全て(qiitaには載せられませんが試合のスコア、対戦選手名、そのステイタス等)を対象にリンクにしたいけど大きくはまった。
after
<% if games.empty? %>
<p class="text-center my-3">試合がありません</p>
<% else %>
<% games.each do |game| %>
<%= link_to game, class:"card my-3" do %>
<div class="row m-2">
<div class="row col-12 pb-2 pt-1">
<div class="col-6 "><%= game.fight_time.try(:strftime, "%Y年%-m月%-d日(#{%w(日 月 火 水 木 金 土)[game.created_at.wday]}) %H:%M") %></div>
<div class="mx-auto text-center col-6 text5"><%=game.tennis_court.prefecture %></div>
</div>
</div>
<% end %>
<% else %><!-- 条件2-->
<!-- 条件2にあわせて少し変更した、上と似たようなコード-->
<% end %>
##はまったところ
_game_card.html.erb
<% if games.empty? %>
<p class="text-center my-3">試合がありません</p>
<% else %><!-- 条件1-->
<% games.each do |game| %>
<%= link_to game, class: "row col-12 pb-2 pt-1" do %>
<div class="card my-3">
<div class="row m-2">
<div class="col-6 "><%= game.fight_time.try(:strftime, "%Y年%-m月%-d日(#{%w(日 月 火 水 木 金 土)[game.created_at.wday]}) %H:%M") %></div>
<div class="mx-auto text-center col-6 text5"><%= game.tennis_court.prefecture %></div>
<% end %>
</div>
</div>
<% else %><!-- 条件2-->
<!-- 条件2にあわせて少し変更した、上と似たようなコード-->
<% end %>
こんな様に、単にlink_toを該当の場所へ外に出して終わりだろうとおもって引き受けたタスクでした。
結果CSS が鬼の様に崩れ、そのほかいくつも思い付く限りの変更を行って完成せず。
一日寝て起きたらlink_to に領域のクラスを持たせることを思い付き実行、完成となった。
ひらめきってそんな物なんですね。