14
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails link_toを文言ではなく範囲で指定する

Posted at

#目的

ブラウザで文字に対してのリンクではなくある程度大きな範囲全体に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 に領域のクラスを持たせることを思い付き実行、完成となった。
ひらめきってそんな物なんですね。

14
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?