Rails 3中深层嵌套的路由

时间:2011-04-20 18:11:59

标签: ruby-on-rails ruby ruby-on-rails-3

我在show.html.erb

中有这个
<%= link_to "Pay on this contract", new_product_contract_payment_path %>

这在routes.rb

  resources :products do
    resources :contracts do
      resources :payments 
    end
  end 

但是当我查看合约页面时,我收到此错误:

No route matches {:action=>"new", :controller=>"payments"}

当我使用rake routes并且支付控制器在那里时,路线显示出来。这是我在支付控制器中的新方法。

 def new
    @contract = Contract.find(params[:contract])
    @payment = @contract.line_items.build

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @payment }
    end
  end

有关抛出错误的内容的任何想法?

1 个答案:

答案 0 :(得分:4)

您需要传递合同和产品,例如:

 new_product_contract_payment_path(@product, @contract)