プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby on Rails
  • 【Ruby on Rails】「確認画面」の実装
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】「確認画面」の実装

11.22

  • miyabisan2
  • コメントを書く

この記事は1分で読めます

ルーティングの追加

下記のようにして、「/users」のルーティング設定に新たに「confirmアクション」を追加します。

1
2
3
4
5
  resources :users do
    collection do
      post :confirm
    end
  end

下記のようなルーティング設定が追加されます。

1
confirm_users POST   /users/confirm(.:format)        users#confirm

登録画面のソース

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<h1>New User</h1>
 
<%= form_with(model: @user, local: true, url: confirm_users_path(@user)) do |form| %>
  <% if @user.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2>
 
      <ul>
        <% @user.errors.full_messages.each do |message| %>
          <li><%= message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>
 
  <div class="field">
    <%= form.label :name %>
    <%= form.text_field :name %>
  </div>
 
  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>
 
<%= link_to 'Back', users_path %>

確認画面のソース

「送信する」と「入力画面に戻る」のsubmitを同じアクションに渡しています。ポイントとしては入力画面に戻るボタンでnameでback(どんな文字列でも良いです。)を渡しています。コントローラー側でnameの有無で処理を分岐させることができるようになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%= form_with(model: @user, local: true) do |form| %>
  <%= form.hidden_field :name %>
 
  <div class="field">
    <%= @user.name %>
  </div>
  <div class="actions">
    <%= form.submit '入力画面に戻る', :name => 'back' %>
  </div>
 
  <div class="actions">
    <%= form.submit '送信する' %>
  </div>
<% end %>

コントローラーのソース

ポイントは、create(登録処理)のなかの「if params[:back]」です。戻るボタンが押された時と、登録を実施したときで処理を分岐させることに成功しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  def confirm
    @user = User.new(user_params)
  end
 
  # POST /users
  # POST /users.json
  def create
    @user = User.new(user_params)
    if params[:back]
      render :new
      return
    end
 
      respond_to do |format|
        if @user.save
          format.html { redirect_to @user, notice: 'User was successfully created.' }
          format.json { render :show, status: :created, location: @user }
        else
          format.html { render :new }
          format.json { render json: @user.errors, status: :unprocessable_entity }
        end
      end  
  end

スポンサーリンク
  • 2020 11.22
  • miyabisan2
  • コメントを書く
  • Ruby on Rails
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 11.28

    【Ruby on Rails】ルーティングについての知識(config/routes.rb、collection、memberなど)

  2. 2020 12.26

    【Ruby on Rails】「serialize」や「store」について

  3. 2019 12.07

    【Ruby on Rails】「Active Storage」の基本

  4. 2020 07.18

    【Ruby on Rails】「ActionText」のリッチテキストを使う

  5. 2019 12.07

    【Ruby on Rails】CSVインポートやエクスポート機能について

  6. 2019 12.29

    【Ruby on Rails】「bcrypt」によるログイン機能の実装

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Ruby on Rails】「画面パラメータの渡し方…

【SEO】SEOとURLの関係、サイトマップ、OGP

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー