はじめに
ポートフォリオの作成をし、メンターさんにフィードバックをいただいた点があったので今後の為に書き留めておきます。
改善目標として
・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が提供している機能を知り、レールに乗ったコードが書けるように精進します