質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

Q&A

解決済

1回答

932閲覧

ruby on rails セッション機能を使った別ページでの表示(お客様情報入力→お客様情報確認)

tomato185

総合スコア29

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

0グッド

0クリップ

投稿2020/09/10 04:22

編集2020/09/10 04:23

###前提・実現したいこと
Ruby on rails 初心者です。
現在、ECサイトの構築を行っており、つまずいたのはセッション機能を用いた「お客様情報の確認」ページの実現です。
参考にしているサイト「https://qiita.com/ozackiee/items/4ee774c81b2a0c571c05

addresses/index.html.erb」で入力された住所などの情報をセッションに入れ、
それを次のページ「orders/index.html.erb」でセッションから各データを取り出したいです。

###発生している問題・エラーメッセージ
エラーはないのですが、「orders/index.html.erb」にて情報が表示されません。
(sessionへの保存方法や出し方がうまく行っていないのではいかと考えます。)

###該当のソースコード

(views/addresses/index.html.erb) <% provide(:title, "購入手続き") %> <section class="buy"> <div class="buy_container"> <div class="buy_area"> <div class="left"> <div class="main_area"> <div class="address_container"> <div class="address_header"><h2>1.お届け先情報</h2></div> <div class="address_area"> <%= form_for(:session, url: addresses_path) do |f|%> <div class="select"> <div class="store"> <%= f.check_box :store, class: 'btn_store' %> <%= f.label :store, "店頭での受け取り" %> </div> </div> <div class="user_name"> <div class="flex_box1"> <p><%= f.label :last_name, "姓" %></p> <%= f.text_field :last_name, class: 'address_controle' %> </div> <div class="flex_box2"> <p><%= f.label :first_name, "名" %></p> <%= f.text_field :first_name, class: 'address_controle' %> </div> </div> <div class="user_furi_name"> <div class="flex_box1"> <p><%= f.label :furi_last_name, "フリガナ(姓)" %></p> <%= f.text_field :furi_last_name, class: 'address_controle' %> </div> <div class="flex_box2"> <p><%= f.label :furi_first_name, "フリガナ(名)" %></p> <%= f.text_field :furi_first_name, class: 'address_controle' %> </div> </div> <p><%= f.label :postal_code, "郵便番号" %></p> <%= f.text_field :postal_code, class: 'address_controle', onKeyUp:"AjaxZip3.zip2addr(this,'','session[prefecture]','session[address]');" %> <div class="prefecture"> <div class="flex_box1"> <p><%= f.label :prefecture, "都道府県" %></p> <%= f.text_field :prefecture, class: 'address_controle', name: "session[prefecture]" %> </div> <div class="flex_box2"> <p><%= f.label :address, "住所(マンション名も含む)" %></p> <%= f.text_field :address, class: 'address_controle', name: "session[address]" %> </div> </div> </div> </div> <div class="cash_container"> <div class="cash_header"><h2>2.お支払い方法</h2></div> <div class="cash_area"> <div class="how_to_pay"> <label class="radio1"> <%= f.radio_button :how_to_pay, "銀行振り込み", class:"radio1-1" %>銀行振り込み </label> <label class="radio2"> <%= f.radio_button :how_to_pay, "店頭払い", class:"radio2-1" %>店頭払い </label> </div> </div> </div> <%= f.hidden_field :user_id, value: current_user.id %> <p><%= f.submit "最終確認へ", class: 'btn' %></p> <% end %> </div> </div> </div> </div> </section>
(controllers/ addresses_controller.rb) class AddressesController < ApplicationController def index cart = Cart.find_by(user_id: current_user.id) @cart_items = CartItem.where(cart_id: cart.id) @product= Product.find_by(id: current_user.id) @addresses = Address.new end def create session_store = params[:session][:store] session_last_name = params[:session][:last_name] session_fast_name = params[:session][:first_name] session_furi_last_name = params[:session][:furi_last_name] session_furi_first_name = params[:session][:furi_first_name] session_postal_code = params[:session][:postal_code] ssession_prefecture = params[:session][:prefecture] session_address = params[:session][:address] session_how_to_pay = params[:session][:how_to_pay] redirect_to orders_path end private end
(views/orders/index.html.erb) <% provide(:title, "購入確認") %> <section class="buy"> <div class="buy_container"> <div class="buy_area"> <div class="left"> <div class="main_area"> <div class="address_container"> <div class="address_header"><h2>1.お届け先情報</h2></div> <div class="address_area"> <%= form_for(@addresses) do |f|%> <% if session_store == 1 %> <div class="select"> <div class="store"> <p>店頭での受け取り</p> </div> </div> <% end %> <div class="user_name"> <div class="flex_box1"> <p>姓:<% session_last_name %></p> </div> <div class="flex_box2"> <p>名:<%= session_fast_name %></p> </div> </div> <div class="user_furi_name"> <div class="flex_box1"> <p>フリガナ(姓):<%= session_furi_last_name %></p> </div> <div class="flex_box2"> <p>フリガナ(名):<%= session_furi_first_name %></p> </div> </div> <p>郵便番号:<%= session_postal_code %></p> <div class="prefecture"> <div class="flex_box1"> <p>都道府県:<%= session_prefecture %></p> </div> <div class="flex_box2"> <p>住所:<%= session_address %></p> </div> </div> </div> </div> <div class="cash_container"> <div class="cash_header"><h2>2.お支払い方法</h2></div> <div class="cash_area"> <div class="how_to_pay"> <p>住所:<%= session_how_to_pay %></p> </div> </div> </div> <%= f.hidden_field :user_id, value: current_user.id %> <p><%= f.submit "最終確認へ", class: 'btn' %></p> <% end %> </div> </div> </div> </div> </section>
(controllers/orders_controller.rb) class OrdersController < ApplicationController def index cart = Cart.find_by(user_id: current_user.id) @cart_items = CartItem.where(cart_id: cart.id) @product= Product.find_by(id: current_user.id) @addresses = Address.new end def create @address = Address.new() end end

###補足情報(FW/ツールのバージョンなど)
ruby 2.6.6
rails '~> 5.2.4', '>= 5.2.4.3'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomato185

2020/09/10 06:02

ありがとうございます。 デバッグしてみました!
guest

回答1

0

自己解決

簡単なミスでした。
addresses_controllerで、わざわざsessionから別の変数にしておりました。

def create   session[:store] = params[:session][:store] session[:last_name] = params[:session][:last_name] end

こんな感じに各情報を保存し、使いたい場所(今回はindex.html.erb)で
<% session[:store]%><% session[:last_name]%>のようにして使用する。

投稿2020/09/10 06:18

tomato185

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問