要約:モデルの保存が失敗したときに、レールのネストされたリソースルートURLを保持する方法はありますか?
私はネストされた属性を持っています。私はルートに行く:アクションを作成するには
/customers/:id/credit_cards/new
、失敗したセーブ、コードが
render :new
を行います。これは、にURLをプッシュ:
/credit_cards/new
どのように私は確信してURLの滞在を作るのですか顧客ルートとは?
詳細:
私は、次のルートを使用したい:
# Credit cards should be associated with a customer except
# potentially on initial creation:
resources :customers do
resources :credit_cards, only: [:index, :show, :new, :create, :edit, :update, :destroy, :show]
end
# Allow creating a credit card but selecting
resources :credit_cards, only: [:new, :create]
基本的には、顧客が存在するときのために、ネストされたルートと、私が作成して割り当てることができたときのための非ネストされたルート顧客と同じ視点で
私は新しいでは
app/controller/credit_cards_controller.rb
で単一のコントローラを持っており、検証の失敗があった場合、私は顧客IDを持っているか、いない
before_action :set_credit_card, only: [:show, :edit, :update, :destroy]
before_action :set_customer, only: [:index, :show, :create, :new, :edit, :update]
# GET /credit_cards/new
def new
@credit_card = if @customer
@customer.credit_cards.build rescue CreditCard.new
else
CreditCard.new
end
end
def create
@credit_card = CreditCard.new(credit_card_params)
respond_to do |format|
if @credit_card && @credit_card.save
format.html { redirect_to on_new_or_update_redirect_location, notice: 'Credit card was successfully created.' }
else
# HERE IS THE ISSUE: Figure out how to make sure the url stays as /customers/:id/credit_cards/new instead of /credit_cards/new
format.html { render :new }
end
end
end
場合、私は、それをチェックするアクションを作成し、再ビューをレンダリングしますが、URLは
credit_cards/new
にプッシュされています。正しいURLとcustomer_になっていません。 idはもはやパラメータではありません。私はcustomer_idを渡すことができれば正しいことをするだろうと思っていますが、どうやってそれを行うか分かりません。
ありがとうございました。それはそれだった。 –