LoginSignup
0
0

More than 5 years have passed since last update.

初心者がRailsガイドを1から100まで読んでみる Railsをはじめよう編その9 リンク

Posted at

5.9.リンクの追加

前節でさらっと導入されてたリンクについての節だよ。
Webページを作るのに必須と言ってもいいほどのリンクだけどRails上ではどうやって実装するのだろう。

Railsのリンクはビューヘルパーというメソッド集の内の一つだよ。
ビューヘルパーといえばフォームを作る時にも出てきたね。
form_withってやつ。

リンクはどのように書くかというと
link_to '文字', リンク先のパス
こんな感じ。

indexビューに新規記事作成ページ(newビュー)へのリンクを貼ってみよう。

index.html.erb
<h1>Listing articles</h1>

<%= link_to 'New article', new_article_path %>

<table>
  <tr>
    <th>Title</th>
    <th>Text</th>
    <th></th>
  </tr>

  <% @articles.each do |article| %>
    <tr>
      <td><%= article.title %></td>
      <td><%= article.text %></td>
      <td><%= link_to 'Show', article_path(article) %></td>
    </tr>
  <% end %>
</table>

スクリーンショット 2018-09-29 22.12.47.png

スクリーンショット 2018-09-29 22.13.00.png

indexビューにNew articleというリンクができてそれを押すと前に作ったnewビューにジャンプした。

<%= link_to 'New article', new_article_path %>

この書き方だけど、'New article'はいいとして、気になるのはnew_article_pathの方だ。

ルーティングを確認してみて
スクリーンショット 2018-09-16 23.04.57.png

Prefixの中にnew_articleがある。
それはnewアクションへのパスだ。
前にも話したけど、Prefix + _pathって書けばそれがアクションへのパスとして使えるんだね。

そういえばindexページにはもう一つリンクがある。

  <% @articles.each do |article| %>
    <tr>
      <td><%= article.title %></td>
      <td><%= article.text %></td>
      <td><%= link_to 'Show', article_path(article) %></td>
    </tr>
  <% end %>

前節で作った記事の一覧から各記事にとべるリンクだ。
ルーティングと照らし合わせてこれを読み解くと、
article_path(article)つまりshowアクションへのリンクだ。
パスの後ろに(article)って書いてるけど…
articleeach do |article|articleで繰り返しの中のひとつひとつの記事が格納されている変数だ。

showアクションってどんなだったっけ

showアクション
    def show
        @article = Article.find(params[:id])
    end

受け取ったリクエストのパラメータの中から:idを取り出してそれでArticleモデルを検索してたんだった。
ということはarticle_path(article)って書けば、そのひとつひとつの記事をパラメータとしてshowアクションへリクエストを送れるということ?

なんかリクエストのとこいまいちよくわかってない感じがするなあ。

ついでにshowビューに戻るリンクもつけたよ。

show.html.erb
<p>
  <strong>Title:</strong>
  <%= @article.title %>
</p>

<p>
  <strong>Text:</strong>
  <%= @article.text %>
</p>

<%= link_to 'Back', articles_path %>

スクリーンショット 2018-09-29 22.32.50.png

0
0
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
0
0