0
0

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 3 years have passed since last update.

【Railsチュートリアル】第7章 ユーザー登録②

Last updated at Posted at 2021-02-14

7.2 ユーザー登録フォーム

  • ユーザー登録フォームを作成する。

7.2.1 form_withを使用する

  • Railsでform_withヘルパーメソッドを使う。
app/controllers/users_controller.rb
class UsersController < ApplicationController

  def show
    @user = User.find(params[:id])
  end

  def new
    #Userインスタンスを作成し、@userに代入せよ
    @user = User.new
  end
end
app/views/users/new.html.erb
<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>

<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_with(model: @user, local: true) do |f| %>
      <%= f.label :name %>
      <%= f.text_field :name %>

      <%= f.label :email %>
      <%= f.email_field :email %>

      <%= f.label :password %>
      <%= f.password_field :password %>

      <%= f.label :password_confirmation, "Confirmation" %>
      <%= f.password_field :password_confirmation %>

      <%= f.submit "Create my account", class: "btn btn-primary" %>
    <% end %>
  </div>
</div>

演習 1

試しに、ブロックの変数fをすべてfoobarに置き換えてみて、結果が変わらないことを確認してみてください。確かに結果は変わりませんが、変数名をfoobarとするのはあまり良い変更ではなさそうですね。その理由について考えてみてください。

f.labelfformを示しており、それをfoobarにしてしまうと、意味がわからなくなってしまう。
また、foobarは意味の無い単語のためこの場合は適さない。

7.2.2 フォームHTML

app/views/users/new.html.erb
<%= form_with(model: @user, local: true) do |f| %>
  .
  .
  .
<% end %>

XHR request って?

JavaScriptなどのウェブブラウザ搭載のスクリプト言語でサーバとのHTTP通信を行うための、組み込みオブジェクト(API)である。Google マップ、Facebookなどが利用している。
参考: XMLHttpRequest - ウィキペディア(Wikipedia)

API って?

Application Programming Interfaceの頭文字。
APIとはソフトウェアやアプリケーションなどの一部を外部に向けて公開することにより、第三者が開発したソフトウェアと機能を共有できるようにしてくれるもの。
参考: データの時間

app/views/users/new.html.erb
<%= f.label :name %>
<%= f.text_field :name %>

# @userの属性を設定するために特別に設計されたHTMLを返す
<label for="user_name">Name</label>
<input id="user_name" name="user[name]" type="text" />

ユーザーの作成で重要なこと

  • inputごとにある特殊なname属性
  • formタグ自身
app/views/users/new.html.erb
# /users(action="/users")に対してHTTPのPOSTリクエスト(method="post")を送信せよ
<form action="/users" class="new_user" id="new_user" method="post">

演習 1

『Web基礎編: HTML』ではHTMLをすべて手動で書き起こしていますが、なぜformタグを使わなかったのでしょうか? 理由を考えてみてください。

formタグを使わなかった理由は『Web基礎編: HTML』において使う必要がなかったから?
formタグは入力・送信フォームを作成するために使われるので、この機能を実装しない『Web基礎編: HTML』では、そもそも必要がないので使わなかった?
(本文が有料のため確認できておりませんが)

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?