###前提・実現したいこと
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'
回答1件
あなたの回答
tips
プレビュー