2
3

More than 5 years have passed since last update.

初心者)Twitter クローン課題の苦労した点ピックアップ

Posted at

1.コメントコミット忘れがち。。

git add .

からの、、

git commit -m 'ここにコメント作成します'

メンターさんにも課題提出時に指摘されたのですが、コミットする粒度が荒い。要はもっとコマメにセーブポイントを作りなさいとのこと。
最初は細かすぎるくらいのイメージでやって徐々に粒度を荒くしていく感じがいいのかもしれない。

例えばこんな感じでやればよかったのかも、、

データベース作成(ファーストコミット)

モデル作成・マイグレーション(コミット)

バリデーション作成(コミット)

コントローラー作成(コミット)

indexページの作成(コミット)

showページの作成(コミット) 

......

2.Confirm画面がややこしい

hidden_fieldというのがピンとこないんだが、
要はフォーム画面なんだけど、入力フォームを生成せずに値のみを保持する機能ということらしいです。
値の表示については下記のPタグで別途出力している。
(Pタグを削除すると値の表示はされないが、hidden_field で値は保持されているので登録は可能)

ただこのままではNewアクションのForm_withはCreateに飛んでしまうので、確認画面に飛ぶようにルーティングし直す必要がある。

ヘルパーを使ってNewとEditの分岐をするのですが、その際はHTMLのFoamタグに必須のAction属性を使って分岐させる。

その際はFoamタグ作成の際にはAction属性(必須)とMethod属性(オプション)の指定を行う。

Action属性
1.formタグに指定する属性で、必ず指定しなければならない
2.フォームの送信ボタンを押して送信されるデータの送信先を指定する


Method属性
1.formタグに指定する属性で、必須ではない
2.送信するときの転送方法を指定する
3.postとgetがある

module BlogsHelper
  def choose_new_or_edit
    if action_name == 'new' || action_name == 'confirm'
      confirm_blogs_path
    elsif action_name == 'edit'
      blog_path
    end
  end
end

3.確認画面から値を保持しつつ「戻る」のがややこしい

hidden_fieldは値を保持しているので、これを使って値をnewのページを送り返している。戻るボタンのform_withはnewアクションを実行リクエストするため、HTTPメソッドがgetになるので注意してください。

さっき出てきたMethod属性-getを活用しています。
それはformタグのmethodをgetに指定すると、入力したフォーム内容のデータがURIにくっついて送信されるから。
ちなみにmethodをpostに指定すると、入力したフォーム内容はURIとは別の場所に保管されてデータが送信される。
入力したフォーム内容のデータは外側からの表示では見ることができないので安全性が高いのが利点となる。

<%= form_with(model: @blog, url: new_blog_path, local: true, method: 'get') do |form| %>
  <%= form.hidden_field :title %>
  <%= form.hidden_field :content %>
  <%= form.submit "戻る" %>
<% end %>

(おまけ) 何故、formに"local: true"を入れるのか

検索から。。
local: trueがない場合、Rails 5ではAjaxによる送信という意味になります。ふつうにHTMLとしてフォームを送信する場合にlocal:trueが必要となります。

2
3
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
2
3