TasksController中的NoMethodError #new undefined方法`tasks',Rails 4

时间:2014-01-31 22:45:15

标签: ruby-on-rails-4

我收到一个特别令人沮丧的错误。

我正在尝试创建一个具有与之关联的用户ID的“任务”。但是当我在本地主机中创建一个新任务时,我在TasksController中收到以下错误消息NoMethodError #new #

的未定义方法`tasks'

Git repo:https://github.com/BrianLobdell/emailtest

错误:

这是我的任务控制器         class TasksController< ApplicationController的        before_action:set_task,only:[:show,:edit,:update,:destroy]

  # GET /tasks
  # GET /tasks.json
  def index
    @tasks = Task.all
  end

  # GET /tasks/1
  # GET /tasks/1.json
  def show
  end

  # GET /tasks/new
  def new
    @task = current_user.tasks.build
  end

  # GET /tasks/1/edit
  def edit
  end

  # POST /tasks
  # POST /tasks.json
  def create
    @task = current_user.tasks.build(task_params)

    respond_to do |format|
      if @task.save
        format.html { redirect_to @task, notice: 'Task was successfully created.' }
        format.json { render action: 'show', status: :created, location: @task }
      else
        format.html { render action: 'new' }
        format.json { render json: @task.errors, status: :unprocessable_entity }
      end
    end
  end

1 个答案:

答案 0 :(得分:0)

即使您的任务模型中有belongs_to关联,您也需要在用户模型中使用匹配的has_many才能使current_user.tasks方法生效。

您需要做的就是

class User < ActiveRecord::Base
  # ...
  # ...

  has_many :tasks
end