为什么我一直采用未定义的方法'什么时候它工作正常?

时间:2015-06-18 21:45:53

标签: ruby-on-rails ruby ruby-on-rails-4 controller

我的OrdersController如下所示,但我不断收到此消息:

未定义的方法`listing_id ='对于#

提取的来源(第31行):         29         三十         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

2 个答案:

答案 0 :(得分:1)

检查订单模型的字段。您是否将listing_id作为订单表上的列?检查迁移文件,确保在“orders_id”字段中添加“listing_id”字段的位置。

答案 1 :(得分:0)

定义强大的参数:

def order_params
  params.require(:order).permit(:address, :city, :state, :listing_id, :buyer_id, :seller_id  )
end