所以我认为我遗漏了一些因为下面的代码,我已经包含了错误消息,我认为任务表没有task_id,但是当我运行迁移将task_id添加到任务时,它仍然给了我这个错误。
路线
resources :tasks do
resources :comment
end
模型 - 评论
class Comment < ActiveRecord::Base
attr_accessible :author, :comment
belongs_to :tasks
has_one :author
validates :comment, :presence => true
end
模型任务
class Task < ActiveRecord::Base
attr_accessible :name, :task
has_many :comments, :dependent => :destroy
validates :name, :presence => true
end
评论控制器
class CommentsController < ApplicationController
def index
@comment = Comment.new
@comments = Comment.all
end
def create
@task = Task.find(params[:id])
@comment = @task.Comment.create(params[:task])
redirect_to post_path(@task)
end
end
表单 - 部分
<%= form_for ([@task, @task.comments.build]) do |f| %>
<%= f.text_area :comment %>
<%= f.submit %>
<% end %>
问题是什么?
unknown attribute: task_id
Extracted source (around line #1):
1: <%= form_for ([@task, @task.comments.build]) do |f| %>
2: <%= f.text_area :comment %>
3: <%= f.submit %>
4: <% end %>
Trace of template inclusion: app/views/tasks/show.html.erb
Rails.root: /home/adam/Documents/Aptana Studio 3 Workspace/StartPoint
Application Trace | Framework Trace | Full Trace
app/views/forms/_comments.html.erb:1:in `_app_views_forms__comments_html_erb___445541804__622889658'
app/views/tasks/show.html.erb:5:in `_app_views_tasks_show_html_erb___428009053_87363420'
Request
Parameters:
{"id"=>"3"}
答案 0 :(得分:2)
我认为任务表没有task_id,但是当我进行迁移以将task_id添加到任务时,它仍然给了我这个错误
你正在考虑错误的表格。当你这样说:
class Comment < ActiveRecord::Base
belongs_to :task # Note that this should be singular as zeacuss notes below
end
ActiveRecord假定comments
表将有task_id
列链接回tasks
表。您无需迁移即可添加tasks.task_id
,您需要迁移才能添加comments.task_id
。
ActiveRecord Associations Guide可能会有一些好的阅读。
答案 1 :(得分:1)
你应该试试
class Comment < ActiveRecord::Base
belongs_to :task
end
task
不是tasks
,因为它是一对一的对应关系。
在此处详细了解belongs_to association: