Rails order_id 我该怎么存进去,新手求帮助。。。

wxliuzifan · 2014年12月04日 · 最后由 blacktulip 回复于 2014年12月05日 · 2058 次阅读

我把 product,orderitems 和 orders 三个模型,orderitems 里面只能存进去 produc_id,没有 order_id,有人能帮我看一下么。。。 orderitems 代码如下。。 ‘’‘ruby class OrderitemsController < ApplicationController

# def new # @orderitem = Orderitem.new # end def create @order = Order.new product = Product.find(params[:product_id]) @orderitem = @order.orderitems.build(product: product) if @orderitem.save redirect_to new_order_path else render 'new' end end end ’‘’

你这个 @order只是 new 出来,放在内存里面,并没有保存到数据库里面,所以这个@order就没有 id,没有 id 你怎么可能存进去,除非你这个@order先 save 了。

顺便帮楼主排版一下

class OrderitemsController < ApplicationController

  # def new
  # @orderitem = Orderitem.new
  # end

  def create
    @order = Order.new # 把这句改成 @order = Order.create 试试,如果 order 有 properties 就要加上
    product = Product.find(params[:product_id])
    @orderitem = @order.orderitems.build(product: product)

    if @orderitem.save
      redirect_to new_order_path
    else
      render 'new'
    end
  end
end

#1 楼 @kai209209 可是我改成 create 也是没有用的啊。。。

#2 楼 @blacktulip 貌似还是没有用。。。

#4 楼 @wxliuzifan 噢,那就加个!试试 @order = Order.create!

#5 楼 @blacktulip 可以了啊,谢啦,create 和 create!有什么区别啊

#6 楼 @wxliuzifan 加叹号是立刻执行的意思,这些文档上都有,读一遍就知道了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号