LoginSignup
0
0

More than 3 years have passed since last update.

【Rails】ルーティングヘルパー

Last updated at Posted at 2021-01-23

はじめに

ポートフォリオの作成をし、メンターさんにフィードバックをいただいた点があったので今後の為に書き留めておきます。
改善目標として
・Railsっぽいコード(レールに乗ったコード)を目指す。つまり、Railsが用意している便利な機能を活用する。

・ルーティングは以下のように設定しています。

config/routes.rb
resources :blogs

Before

app/views/blogs/edit.html.erb
<h1>ブログ編集</h1>
    <%= form_with model:@blog, url:"/blogs/#{@blog.id}", local: true do |f| %>
      <h4>タイトル</h4>
      <%= f.text_field :blog_title %>
      <h4>画像</h4>
      <%= f.attachment_field :image %>
      <h4>本文</h4>
      <%= f.text_area :blog_text, size: "40x10" %>
      <%= f.submit "編集を保存", class: "btn btn-primary" %>
    <% end %>

改善すべきは2行目の「url:"/blogs/#{@blog.id}"」
このようにurlをベタがきしていると、urlを変更したくなった時に修正箇所がとても多くなってしまう。
そこで、ルーティングヘルパーという機能でこのコードを改善します。

やったこと

Terminal
$ rails routes
                    blogs GET    /blogs(.:format)                                                               blogs#index
                          POST   /blogs(.:format)                                                               blogs#create
                 new_blog GET    /blogs/new(.:format)                                                           blogs#new
                edit_blog GET    /blogs/:id/edit(.:format)                                                      blogs#edit
                     blog GET    /blogs/:id(.:format)                                                           blogs#show
                          PATCH  /blogs/:id(.:format)                                                           blogs#update
                          PUT    /blogs/:id(.:format)                                                           blogs#update
                          DELETE /blogs/:id(.:format)                                                           blogs#destroy

パスとヘルパーメソッドの関係はターミナルから「rails routes」と打って確認できます。
左がヘルパーメソッドに渡すコードで右がそれによって返されるパスという認識です。

After

app/views/blogs/edit.html.erb
<h1>ブログ編集</h1>
    <%= form_with model:@blog, url: edit_blog_path(@blog.id), local: true do |f| %>
      <h4>タイトル</h4>
      <%= f.text_field :blog_title %>
      <h4>画像</h4>
      <%= f.attachment_field :image %>
      <h4>本文</h4>
      <%= f.text_area :blog_text, size: "40x10" %>
      <%= f.submit "編集を保存", class: "btn btn-primary" %>
    <% end %>

最後に

Railsが提供している機能を知り、レールに乗ったコードが書けるように精進します:fist::fire:

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