【问题标题】:NoMethodError in TasksController#new undefined method `tasks', Rails 4TasksController 中的 NoMethodError#new 未定义方法“任务”,Rails 4
【发布时间】:2014-02-20 22:26:30
【问题描述】:

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

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

的未定义方法“任务”

Git 仓库:https://github.com/BrianLobdell/emailtest

错误:

这是我的任务控制器 类任务控制器

  # 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

【问题讨论】:

  • 在正文中添加了 git repo

标签: ruby-on-rails-4


【解决方案1】:

即使您的 Task 模型中有 belongs_to 关联,您也需要在 User 模型中有匹配的 has_many 才能使 current_user.tasks 方法起作用。

你需要做的就是

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

  has_many :tasks
end

【讨论】:

  • 非常感谢。在尝试复制教程中的代码时,我想我最终还是写了他们拥有的东西,而不是把它改成我的模型。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
相关资源
最近更新 更多