我一直在尝试按照步骤让我做一个待办事项列表。在我提交物品之前,一切都很顺利。我一直收到错误说“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
端 如果有人能帮助我,我将非常感激!
答案 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
方法中。