未定义的属性Task_ID

时间:2012-09-03 20:26:45

标签: ruby-on-rails ruby

所以我认为我遗漏了一些因为下面的代码,我已经包含了错误消息,我认为任务表没有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"}

2 个答案:

答案 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:

belongs_to