为什么我之前工作正常却一直收到 'undefined method'?
Why do I keep getting 'undefined method' when it's worked fine before?
我的 OrdersController 如下所示,但我不断收到此消息:
#
的未定义方法 `listing_id='
提取的源代码(大约第 31 行):
29
30
31 @order.listing_id = @listing.id
我是不是做错了什么?我正在按照教程进行操作,然后按照说明进行操作,然后当它不起作用时决定复制和粘贴,但它仍然不起作用。请提供任何帮助。
完整代码如下
class OrdersController < ApplicationController
before_action :set_order, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!
def sales
@orders = Order.all.where(seller: current_user).order("created_at DESC")
end
def purchases
@orders = Order.all.where(buyer: current_user).order("created_at DESC")
end
# GET /orders/new
def new
@order = Order.new
@listing = Listing.find(params[:listing_id])
end
# POST /orders
# POST /orders.json
def create
@order = Order.new(order_params)
@listing = Listing.find(params[:listing_id])
@seller = @listing.user
@order.listing_id = @listing.id
@order.buyer_id = current_user.id
@order.seller_id = @seller.id
Stripe.api_key = ENV["STRIPE_API_KEY"]
token = params[:stripeToken]
begin
charge = Stripe::Charge.create(
:amount => (@listing.price * 100).floor,
:currency => "usd",
:card => token
)
flash[:notice] = "Thanks for ordering!"
rescue Stripe::CardError => e
flash[:danger] = e.message
end
respond_to do |format|
if @order.save
format.html { redirect_to root_url, notice: 'Order was successfully created.' }
format.json { render action: 'show', status: :created, location: @order }
else
format.html { render action: 'new' }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_order
@order = Order.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def order_params
params.require(:order).permit(:address, :city, :state)
end
end
定义强参数:
def order_params
params.require(:order).permit(:address, :city, :state, :listing_id, :buyer_id, :seller_id )
end
检查订单模型的字段。您是否将 listing_id 作为订单 table 的一列?检查迁移文件以确保您已将 "listing_id" 字段添加到 "orders" table.
我的 OrdersController 如下所示,但我不断收到此消息:
#
的未定义方法 `listing_id='提取的源代码(大约第 31 行): 29 30 31 @order.listing_id = @listing.id
我是不是做错了什么?我正在按照教程进行操作,然后按照说明进行操作,然后当它不起作用时决定复制和粘贴,但它仍然不起作用。请提供任何帮助。
完整代码如下
class OrdersController < ApplicationController
before_action :set_order, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!
def sales
@orders = Order.all.where(seller: current_user).order("created_at DESC")
end
def purchases
@orders = Order.all.where(buyer: current_user).order("created_at DESC")
end
# GET /orders/new
def new
@order = Order.new
@listing = Listing.find(params[:listing_id])
end
# POST /orders
# POST /orders.json
def create
@order = Order.new(order_params)
@listing = Listing.find(params[:listing_id])
@seller = @listing.user
@order.listing_id = @listing.id
@order.buyer_id = current_user.id
@order.seller_id = @seller.id
Stripe.api_key = ENV["STRIPE_API_KEY"]
token = params[:stripeToken]
begin
charge = Stripe::Charge.create(
:amount => (@listing.price * 100).floor,
:currency => "usd",
:card => token
)
flash[:notice] = "Thanks for ordering!"
rescue Stripe::CardError => e
flash[:danger] = e.message
end
respond_to do |format|
if @order.save
format.html { redirect_to root_url, notice: 'Order was successfully created.' }
format.json { render action: 'show', status: :created, location: @order }
else
format.html { render action: 'new' }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_order
@order = Order.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def order_params
params.require(:order).permit(:address, :city, :state)
end
end
定义强参数:
def order_params
params.require(:order).permit(:address, :city, :state, :listing_id, :buyer_id, :seller_id )
end
检查订单模型的字段。您是否将 listing_id 作为订单 table 的一列?检查迁移文件以确保您已将 "listing_id" 字段添加到 "orders" table.