关闭我的头顶,和未经考验的,我觉得有以下将工作:
= 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