Ruby on rails 简单积垢赢得';不创建对象
我曾试图通过开始从事一个小项目而进入rails和ruby,但遇到了一个无法解决的问题 当我试图为一个对象创建一个简单的CRUD时,创建部分不再有意义Ruby on rails 简单积垢赢得';不创建对象,ruby-on-rails,ruby,Ruby On Rails,Ruby,我曾试图通过开始从事一个小项目而进入rails和ruby,但遇到了一个无法解决的问题 当我试图为一个对象创建一个简单的CRUD时,创建部分不再有意义 def create if (params.nil? || params[:board].nil?) return render status: 400 end @board = Board.create(params["board"]["title"], params["board"]["descripti
def create
if (params.nil? || params[:board].nil?)
return render status: 400
end
@board = Board.create(params["board"]["title"], params["board"]["description"])
#...
end
无论出于何种原因,它都会给我一个ArgumentError“参数数量错误(给定2,预期为0..1)”。所以我想我只需要自己创建它,然后使用save方法将它保存到数据库中,但这也没有成功:
@board = Board.new(params["board"]["title"], params["board"]["description"])
@board.save!
这给了我nil:NilClass的未定义方法`reverse\u merge!'
我现在试着调试一下,但还是搞不懂。而不是,它不是nil,即使它说它使用nil类
编辑:表单代码(视图)
“创建”do%>
头衔
描述
我真的不知道发生了什么,希望有人能帮忙。提前感谢-前缀/Dominik而不是
@board = Board.create(params["board"]["title"], params["board"]["description"])
试一试
你也应该能做到这一点
@board = Board.create(params[:board])
但出于安全原因,这是行不通的
当您尝试创建一个新对象时,您应该传递一个散列,而不是像以前那样传递字符串 将控制器方法替换为
def create
@board = Board.new(board_params)
if @board.save
redirect_to @board, notice: 'Board was successfully created.'
else
# render the new page
end
end
并添加一个私有方法
private
def board_params
params.require(:board).permit(:title, :description)
end
已经试过了,给出了NoMethodError:“未定义的方法”`[]'for nil:NilClass”抱歉刚才正在编辑-你能试试Board.create(title:params[“Board”][“title”],description:params[“Board”][“description”]),然后阅读关于参数的说明。出于安全原因,您可以传入批量参数。是否执行此操作:Board.create(title:“title”,description:“the description”),请发布您的表单代码。遗憾的是,还返回到NoMethodError:“未定义的方法”[],用于nil:NilClass”@PreFiXAUT,但看起来params是nil。您能否将控制器方法的内容替换为
呈现文本:params[“board”]
,并告诉我当您单击保存帖子时会显示什么?它只输出一个sinlge'#',仅此而已。奇怪的是,我直接渲染了这个节目,以查看是否确实有数据,并且确实有数据。我能够创建一个板,但没有保存它。很遗憾,@PreFiXAUT您的代码对我来说工作得很好。我不明白你的意思。如果您试图保存而不输入任何值,您应该会看到{“title”=>,“description”=>“}
您看到了吗?将create
操作中的所有内容替换为render text:params[“board”]
。告诉我渲染的是什么。我知道,从各个方面来看,它毫无意义。我之前没有查看完整的源代码,注意到它在#
def create
@board = Board.new(board_params)
if @board.save
redirect_to @board, notice: 'Board was successfully created.'
else
# render the new page
end
end
private
def board_params
params.require(:board).permit(:title, :description)
end