Rails アプリケーションに少し問題があります。簡単に言えば、ユーザーがプロフィールを持ち、提出物を持ち、提出物にコメントできるソーシャル ネットワーキング アプリです。
私のルートは次のとおりです。
map.connect '/:username', :controller => 'users', :action => 'show'
map.connect '/:username/:id', :controller => 'submissions', :action => 'show'
したがって、提出物を表示している場合、URL は次のようになります。
番号はカテゴリの ID 番号です。ここまでは順調ですね。問題が発生するのは、提出物にコメントを提出しようとするときです。各投稿ページには、次のようなコメントを送信するためのフォームがあります。
<% form_for Comment.new do |f| %>
<%= f.text_area :message %>
<%= f.submit "Submit", :disable_with => 'Submitting...' %>
<% end %>
コントローラーは次のようになります。
def create
submission = Submission.find(params[:id])
comment = cat.comments.create(params[:comment])
comment.created_at = Time.now
comment.save
redirect_to submission
end
コメントを送信しようとするたびに、Rails は次のように返します。
ActiveRecord::RecordNotFound in CommentsController#create Couldn't find Submission without an ID or undefined method `answers' for nil:NilClass
基本的に、Rails はパラメーターを使用して URL から :id を取得していません。その理由はわかりません。送信ページは URL の各 ID に対して正しく表示されるため、このフォームでそれを取得しない理由がわかりません。IDに明示的に名前を付けると(IE Submission.find(2345))、完全に機能します...何が欠けていますか?私は愚かなだけですか?
私の関係も適切に設定されています。
前もって感謝します。