關閉我的頭頂,和未經考驗的,我覺得有以下將工作:
= link_to 'Create Payment', payments_path(:payment=>{:claim_id=>@claim.id}), :method => :post
添加網址助手裏面的哈希只是打算把PARAMS的URL,這將是解釋軌道以同樣的方式從表單發佈的「正常」參數。
這將相當於提交新的付款表單,因此它將以相同的方式進行重定向。如果您希望通過ajax處理它,只需添加:remote => true
,並確保您的PaymentsController上的創建操作正確響應javascript。
更新:再次看了你的問題,你想用claim_id新的付款形式已經設置?
好的,有很多方法可以做到這一點。如果您通過PARAMS新的動作,你可以從PARAMS採取claim_id,同樣如我上面顯示爲創建一個記錄:
= link_to 'New Payment', new_payment_path(:claim_id=>@claim.id)
這應該將您鏈接到/支付/新?claim_id = 123控制器
然後:
def new
@payment = Payment.new(:claim_id => params[:claim_id])
end
然而,正如在評論中指出,更好的方式來做到這一點是權利要求下窩付款:
在你的路線:
resources :claims do
resources :payments
end
在你PaymentsController:
before_filter :load_claim
def new
@payment = @claim.payments.build
end
def create
@payment = @claim.payments.build(params[:payment])
...
end
private
def load_claim
@claim = Claim.find(params[:claim_id])
end
在你的鏈接:
= link_to 'New Payment', new_claim_payment_path(@claim)
要知道,現在您的付款路徑的助手將需要在他們的權利要求,即:
= link_to 'Payment', claim_payment_path(@claim, payment)
表單助手同樣的事情:
= form_for [@claim, @payment] ...
只是瀏覽'新'的觀點不是創造記錄的方式'我猜?你在付款控制器中做什麼來處理這些變量? – scaryguy
目前沒有。我讀過的所有內容都與current_user id相關。我無法弄清楚如何將claim_id傳遞給付款創建表單。 – dannymcc
您可以使用':claim_id'在付款創建表單中添加隱藏輸入,並且您可以在您的payment_controller中使用該ID。 – scaryguy