【发布时间】:2009-12-10 04:43:57
【问题描述】:
我的 rails 应用程序有点问题。简而言之,它是一个社交网络应用程序,用户可以在其中拥有个人资料、提交内容并可以对提交内容发表评论。
我的路线如下:
map.connect '/:username', :controller => 'users', :action => 'show'
map.connect '/:username/:id', :controller => 'submissions', :action => 'show'
因此,当他们查看提交时,URL 看起来像:
数字是类别的id号。到现在为止还挺好。当我尝试对提交内容发表评论时,我遇到了麻烦。每个提交页面都有一个提交 cmets 的表单,如下所示:
<% 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)),它可以完美运行......那我错过了什么?我是不是很傻?
我的人际关系也设置得很好。
提前致谢。
【问题讨论】:
标签: ruby-on-rails ruby find routes params