私は基本的なチェックアウトページを作成しようと、ここで私がこれまで持っているものだよ:永続的な関連付けを持つ非永続レコードでアクションを作成しますか?
チェックアウトがtransactions#new
のオフホストされ、そしてフォームが新しいTransaction
オブジェクトのオフに構築されています。 Transaction
は、その下にネストされたモデルの数を持っている:あなたがチェックアウトページに到着したとき
class Transaction < ActiveRecord::Base
# ...
accepts_nested_attributes_for :user, :shipping_address, :products
# ...
end
User
、Product
、およびLocation
(配送先住所)は、ユーザーの流れに応じて、持続することができます。 Product
は、チェックアウトページに到着すると常に保持されます。
この設定は、障害の場合を除いて今まで私のために働いています。私は(以前にユーザ情報に入力されたとの)適切なエラーメッセージを表示するには、新しいTransaction
レコードを再作成しようとしてきた、と私は私のコントローラでこれをやってみました:
class TransactionsController < ApplicationController
def new
@transaction = Transaction.new
end
def create
@transaction = Transaction.new params[:transaction]
# ...
end
end
しかし、私はよこのエラーが表示される:
ActiveRecord::RecordNotFound in TransactionsController#create
Couldn't find Product with ID=1 for Transaction with ID=Request Parameters
{"utf8"=>"✓", "authenticity_token"=>"blahblahblah", "transaction"=>{"products_attributes"=>{"0"=>{"id"=>"1", "quantity"=>"1"}}}}
誰もがこれを知っていますか?あなたがここに私のセットアップについてもう情報が必要な場合は、私に教えてください...裸の必需品に至るまで、この問題を削り取ってみました...
class Transaction < ActiveRecord::Base
has_many :product_transactions
has_many :products, :through => :product_transactions
end
と
class Product < ActiveRecord::Base
has_many :product_transactions
has_many :transactions, :through => :product_transactions
end
と
ねえ、あなたは 'Transaction'と' Product'の間にあなたの関係を投稿できますか? – Azolo
@Azolo - 私の質問の末尾に追加されています。 – neezer