### 実現したいこと
ruby on rails 初心者です。
views/orders/index.html
の注文確定ボタンを押下すると、ordersテーブルとaddressesテーブルに
データが保存される仕組みを作成しております。
※
ordersテーブル 対 addressesテーブル= 1 対 1
productsテーブル 対 ordersテーブル = 1 対 多
### エラー文
undefined method `build_address' for Order(Table doesn't exist):Class Extracted source (around line #8): 6 @product= Product.find_by(id: current_user.id) 7 8 @order = Order.build_address 9 10 end 11
###コード
(views/orders/index.html.erb) ※該当部分 <%= form_for(@order) do |f|%> <%= f.hidden_field :product_id, value: product.id %> <%= f.hidden_field :quantity, value: cart_item.quantity %> <%= f.fields_for :addresses do |a|%> <%= a.hidden_field :user_id, value: current_user.id %> <%= a.hidden_field :last_name, value: session[:last_name] %> <%= a.hidden_field :first_name, value: session[:first_name] %> <%= a.hidden_field :furi_last_name, value: session[:furi_last_name] %> <%= a.hidden_field :furi_first_name, value: session[:furi_first_name] %> <%= a.hidden_field :postal_code, value: session[:postal_code] %> <%= a.hidden_field :prefecture, value: session[:prefecture] %> <%= a.hidden_field :address, value: session[:address] %> <%= a.hidden_field :store, value: session[:store] %> <%= a.hidden_field :how_to_pay, value: session[:how_to_pay] %> <% end %> <p><%= f.submit "注文確定", class: 'btn' %></p> <% end %>
(controllers/orders_controlles.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) @order = Order.build_address end def create @order = Order.new(order_params) if @order flash[:success] = "購入が完了しました。" redirect_to root_path else render "index" end end private def order_params params.require(:order).permit(:product_id, :quantity, address_attributes: [ :user_id, :last_name, :first_name, :furi_last_name, :furi_first_name, :postal_code, :prefecture, :address, :store, :how_to_pay ]) end end
(models/product.rb)※一部記載 class Product < ApplicationRecord has_many :cart_items has_many :orders end
(models/order.rb) class Order < ApplicationRecord belongs_to :product has_one :address accepts_nested_attributes_for :address end
(models/address.rb) class Address < ApplicationRecord belongs_to :order, inverse_of: :addresses end
###試した点
アソシエーションを確認
###補足情報(FW/ツールのバージョンなど)
ruby 2.6.6
rails '~> 5.2.4', '>= 5.2.4.3'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/10 13:44
2020/09/10 13:51
2020/09/10 14:00
2020/09/10 14:12
2020/09/11 01:01
2020/09/11 01:06
2020/09/11 01:08