0

Rails 3 の 'where' について学んでいますが、なぜコードで NoMethod エラーが発生するのか疑問に思っています。

  def create
    #get form values from 'new' page
    @post = Post.new(params[:post])

    #search for the inventory item with the sku code the user typed in the form
    @item = Inventory.where(:sku_code => @post.sku_code)

    #set post variable to a variable from the row with the sku code
    @post.detail = @item.detail

    @post.save
  end

SKU を検索して、同じ ID の他の変数を取得し、それらを @post 変数に設定したいと考えています。私に手を貸してくれる人はいますか?

4

1 に答える 1

1

SKUコードが一意であると仮定すると、次のようにする必要があります

@post = Post.new(params[:post])

@post.detail = Inventory.where(:sku_code => @post.sku_code).first.try(:detail)

firstデータベースから最初の (おそらく唯一の) レコードを取得します。返された が nil でない場合、tryフェッチを試みます。detailInventory

メソッドの詳細については、このブログ投稿を確認してください。try

于 2012-07-29T07:32:01.337 に答える