0

RoR 入門チュートリアルに従った後、別のモデルを次のように追加しました

$ rails g model Category name:string wdate:date

この行resources :categoryを routes.rb ファイルに追加し、最初の Posts コントローラーをコピーして貼り付け、名前を Post から Category に、Posts から Categories に変更しました。

index、form、new、および edit ビューについても同様に行いました。

ここで、localhost:3000/categoryカテゴリの空のリストと/category/new、入力フォームが表示されます。ただし、送信すると、

ルーティング エラー

[POST] "/categories" に一致するルートはありません

利用可能なルートの詳細については、rake ルートを実行してみてください

rake routes提案どおりに実行すると、次のことがわかります。

POST   /category(.:format)          category#create

フォームが間違ったアドレスに送信されるのはなぜですか? 「カテゴリ」という用語を入れた唯一の領域は、#index ハンドラーの変数名用だったので、フォーム ターゲットが/categories. 作成時に明示的にパスを設定する必要があり/categoryますか?

4

1 に答える 1

0

内部のresources :categoryconfig/routes.rbresources :categories.

を実行するときはresources、常にリソースの複数形の名前を使用して、Rails がそのリソースのメンバー ルーティング ヘルパー ( など) に対して自動的に単数形にするようにする必要がありますedit_category_path(category)

次に、コレクションのルートで複数形を使用しform_forます。/categoriesオブジェクトが新しいため、フォームはフォーム データを使用してPOST 要求を発行します。

于 2012-06-12T05:45:32.330 に答える