編集:これらの多くを見てきましたが、これに対する答えが見つからなかったので、できる限り文書化してこの質問をしようとしています.
ネストされたコメント リソースを持つ (API を呼び出す) モデルのない Rails アプリがあります。comments#new または comments#index アクションに直接移動し、それに応じて comments#create アクションに投稿すると、ストーリーに対してコメントを投稿できます。
ただし、親リソースの #show アクションと同じページにコメントを投稿できるようにしたいと考えています: (opusses#show)
rake ルートからの rails url_helper パスを opuss_comments_path として使用し、コントローラーとアクションを明示的に記述してみました。どちらの場合でも、次のメッセージが表示されます。
No route matches {:controller=>"comments", :action=>"create"}
これが私のルートデータベースです:
resources :users
resources :sessions, only: [:new, :create, :destroy]
resources :osessions, only: [:new, :create, :destroy]
resources :authors do
member do
get :following
get :followed
post :follow
end
end
resources :opusses do
resources :comments
member do
get :like
get :authorfeed
post :repost
end
end
そして私のレーキルート:
DELETE /authors/:id(.:format) authors#destroy
opuss_comments GET /opusses/:opuss_id/comments(.:format) comments#index
POST /opusses/:opuss_id/comments(.:format) comments#create
new_opuss_comment GET /opusses/:opuss_id/comments/new(.:format) comments#new
edit_opuss_comment GET /opusses/:opuss_id/comments/:id/edit(.:format) comments#edit
opuss_comment GET /opusses/:opuss_id/comments/:id(.:format) comments#show
PUT /opusses/:opuss_id/comments/:id(.:format) comments#update
DELETE /opusses/:opuss_id/comments/:id(.:format) comments#destroy
&&
like_opuss GET /opusses/:id/like(.:format) opusses#like
authorfeed_opuss GET /opusses/:id/authorfeed(.:format) opusses#authorfeed
repost_opuss POST /opusses/:id/repost(.:format) opusses#repost
opusses GET /opusses(.:format) opusses#index
POST /opusses(.:format) opusses#create
new_opuss GET /opusses/new(.:format) opusses#new
edit_opuss GET /opusses/:id/edit(.:format) opusses#edit
opuss GET /opusses/:id(.:format) opusses#show
PUT /opusses/:id(.:format) opusses#update
DELETE /opusses/:id(.:format) opusses#destroy
コメント#indexページから以下のコードを呼び出すと、完全に機能します。ただし、別のコントローラーから別のフォームに投稿することは非常に一般的であり、opusses#show ページからこのコードを呼び出すと、上記のエラーで失敗します。
URLヘルパーに関係していた可能性があるため、コントローラーとアクションを明示的に指定しようとしましたが、それでも機能しませんでした.同じエラーが発生しました.