0

これはおそらく非常に単純ですが、私はしばらく Rails をいじっていません。

したがって、レポートとレシートの 2 つのモデルがあります。各レポートには多くの領収書があるため、私のモデルは次のようになります。

class Report < ActiveRecord::Base

    has_many :receipts, :dependent => :destroy
  accepts_nested_attributes_for :receipts, :allow_destroy => true

    attr_protected :id

end
class Receipt < ActiveRecord::Base
    belongs_to :report

    attr_protected :id

    validates_presence_of :vendor, :date, :description, :amount, :acctCode
end

私のレシートコントローラーはコントローラーフォルダーのルートにあり、すべてのアクションがリストされています(スキャフォールドによって生成されました)

私のルートは次のとおりです。

root :to => "index#index"

resources :reports do
    resources :receipts
end

私のlink_toは次のようになります:

<%= link_to 'New Receipt', new_report_receipt_path, :class=>"btn btn-success" %>

エラーが表示されます:

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

rake routes を実行したところ、次の結果が得られました。

     report_receipts GET    /reports/:report_id/receipts(.:format)          receipts#index
                     POST   /reports/:report_id/receipts(.:format)          receipts#create
  new_report_receipt GET    /reports/:report_id/receipts/new(.:format)      receipts#new
 edit_report_receipt GET    /reports/:report_id/receipts/:id/edit(.:format) receipts#edit
      report_receipt GET    /reports/:report_id/receipts/:id(.:format)      receipts#show
                     PUT    /reports/:report_id/receipts/:id(.:format)      receipts#update
                     DELETE /reports/:report_id/receipts/:id(.:format)      receipts#destroy

何を与える?

4

2 に答える 2

1

ルートでレポート ID を指定するのを忘れただけです。ビューでレポートにアクセスする方法によって異なりますが、次のようにする必要があります。 new_report_receipt_path(@report)

于 2012-12-27T21:34:15.490 に答える
0

そうではありませんか:

new_report_receipts_path

? s に注意してください。

link_to 'New Receipt', new_report_receipts_path, :class=>"btn btn-success"

于 2012-12-27T21:31:26.970 に答える