2016-04-25 12 views
1

以下のコードは、請求書表示ビューで新しいトランザクションを作成する場合に有効です。しかし、管理ネームスペースでは動作しません。すなわち/管理/請求書/ 1 /が、上/請求書/ 1/管理者ネームスペースを使用したRailsフォームビルダ

show.html.erb

<%= form_for([@invoice, @invoice.transactions.build]) do |form| %> 
.... 
transactions form input 

routes.rbを

resources :invoices do 
    resources :transactions 
end 
+0

レンダリングビューのフォームの 'action'属性の値は何ですか? – Uzbekjon

+0

/請求書/ 1 /トランザクション –

答えて

0

のような名前空間のルートでform_forを呼び出して動作します/admin/invoices/1/の場合、Railsは自動的にadminをルートに追加します。つまり、form_for([@invoice, @invoice.transactions.build])/invoice/:id/transactions/ではなく/admin/invoice/:id/transactions/のようなルートにPOSTします。

は、明示的にフォームのURLを設定し、修正し、正しいルートを推測するために、ルートヘルパーメソッドを使用するには:あなたが正しいルートで invoice_transaction_urlを交換する必要があるかもしれ

form_for(@invoice, url: invoice_transaction_url(@invoice.id)) 

注意を。 rake routesを使用して、目的のコントローラーPOSTアクションに対応するヘルパー・メソッドを見つけます。

+0

クイックフィードバックありがとうございます。私の行動のURLは /請求書/ 1 /トランザクション ですが、添付されていないようです。私はこれが正しいかどうかわかりません、私は "初期化されていない定数TransactionsController"エラーを取得した後/ admin/invoices/1/transactionsの代わりに/ invoices/1/transactionsになります –

+0

'初期化されていない定数TransactionsController "'、それは 'form_for'ですか?トランザクションコントローラは名前空間で定義されていますか? –

+0

はい、その名前空間で定義されています。 資源:請求書は リソースの操作を行います。取引 エンド 名前空間:管理者は リソースの操作を行います。取引 エンド エラーがURLで起こっている(/請求書/ 1 /取引)請求書や取引以来、定義されたルートがありませんで管理者だけがアクセスできます。 –

関連する問題