プログラミングマガジン

プログラミングを中心に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 12.14

    【VSCode】Railsのデバッグ設定(Mac)

  2. 2020 03.15

    【Ruby on Rails】「フィクスチャ」について

  3. 2019 12.01

    【Rspec】基本的な書き方、タグなど

  4. 2018 06.18

    【Ruby on Rails】「コントローラー」の基本、実装方法、より良い設計方法

  5. 2020 11.22

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

  6. 2020 11.11

    【Ruby on Rails】「Capistrano」について

  • コメント ( 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 ©  プログラミングマガジン | プライバシーポリシー