私は Rails 3.2.3 を使用する RoR 初心者です。
製品リソースと、その下にネストされた可用性リソースがあります。
私のルートは次のとおりです。
/products/:product_id/availabilities
これはうまく機能しています。
ただし、私の在庫モデルでは、正確な日付に製品の価格を設定できます。たとえば、今日、製品「x」には「y」の在庫 (整数) と「z」の価格 (価格も属性) があります。可用性モデルの)。
私の質問は、価格の変更を許可するページを追加したいということです (新しい価格モデルを作成せずに)。index アクションのみを使用しています。これは、選択された製品のみのすべての可用性を表示するためです。
次のようなルートを作成するにはどうすればよいですか。
/products/:product_id/availabilities/prices
これをルートrbに追加してみました:
match '/products/:id/availabilities/prices', :action => 'indexP', :via => [:get], :controller => 'prices'
match '/products/:id/availabilities/prices', :action => 'createP', :via => [:post], :controller => 'prices'
同じ可用性モデルと対話するために を使用していることは注目に値しprices controller
ますが、それは問題にはなりません。
prices controller
その中にindexP
とcreateP
アクションも作成しました。私の利用可能性ビューでは、利用可能性を含むindexP.html.erb
通常のものと区別するために を作成しましたindex.html.erb
。
そして、実行すると次のようrake routes
になります。
$ rake routes | grep prices
GET /products/:id/availabilities/prices(.:format)
POST /products/:id/availabilities/prices(.:format)
これは素晴らしいことです。ただし、その URL にアクセスすると、次のようになります。
NoMethodError in Availabilities#show
{"product_id"=>"46",
"id"=>"prices"}
show
カスタムマッチの代わりにアクションを実行しているのはなぜですか?
注:私は次のようなものではありません:/products/:id/availabilities/:id/prices
ちょうど :/products/:id/availabilities/prices
これはおそらくばかげた質問だと思いますが、何が起こっているのかを理解するのに役立つヒントをいただければ幸いです。
よろしくお願いします