我有一個嵌套的屬性。我去的路線:
/customers/:id/credit_cards/new
在創建動作,保存失敗,代碼執行
render :new
這推動網址:
/credit_cards/new
如何確保網址保持與客戶路線?
詳情:
我想用以下途徑:
# 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
當有一個驗證失敗,它重新呈現的觀點,但推動的網址到
credit_cards/new
所以我不再在正確的URL和customer_ ID不再是一個參數。我假設如果我可以通過customer_id它會做正確的事情,但我還沒有找到如何做到這一點。
謝謝。就是這樣。 –