我无法让我的新待办事项列表项目发布。

时间:2016-06-01 08:11:08

标签: ruby-on-rails ruby ruby-on-rails-4

我一直在尝试按照步骤让我做一个待办事项列表。在我提交物品之前,一切都很顺利。我一直收到错误说“ItemsController中的ArgumentError #create,错误的参数个数(0表示1)”。它突出显示了我的create方法下的第二行,说明问题出在哪里。我的控制器中的代码看起来像这样。

class UsersController < ApplicationController
  def show
   @user = params[:id].blank? ? current_user : User.find(params[:id])
   @items = @user.items
  end
end

class ItemsController < ApplicationController
 def create
  @user = User.find(params[:user_id])
  @items = @user.items.create(params.require[:items].permit(:name))
  redirect_to @user
 end
end

我不确定为什么它会给我一个参数错误。我一直在关注视频,他们正在工作,所以我很难过。此外,我不知道您是否需要查看我的数据库迁移,但现在是:

class CreateItems < ActiveRecord::Migration
 def change
  create_table :items do |t|
   t.string :name
   t.references :user, index: true, foreign_key: true

   t.timestamps null: false
  end
end

端 如果有人能帮助我,我将非常感激!

2 个答案:

答案 0 :(得分:1)

  

ItemsController中的ArgumentError #create,错误的参数个数(0   1)

在我的帮助下,它应该是

@items = @user.items.create(params.require(:item).permit(:name))

另外,要使用 Rails方式,您可以通过私有方法调用它,如下所示

#items_controller

class ItemsController < ApplicationController
  def create
    @user = User.find(params[:user_id])
    @items = @user.items.create(item_params)
    redirect_to @user
  end

  private
  def item_params
    @items = @user.items.create(params.require(:item).permit(:name))
  end
end

答案 1 :(得分:0)

替换

@items = @user.items.create(params.require[:items].permit(:name))

@items = @user.items.create(params.require(:item).permit(:name))

ItemsController create方法中。