ruby-on-rails – Rails – 创建新类别(找不到带ID的类别)
发布时间:2020-12-17 02:19:12 所属栏目:百科 来源:网络整理
导读:我知道有一个应用程序 def new respond_to do |format| format.html { new_or_edit } format.js { @category = Category.new } end end 正在点击链接时被调用. 这导致调用new_or_edit(在同一文件中定义). def new_or_edit @categories = Category.find(:all)
我知道有一个应用程序
def new respond_to do |format| format.html { new_or_edit } format.js { @category = Category.new } end end 正在点击链接时被调用. 这导致调用new_or_edit(在同一文件中定义). def new_or_edit @categories = Category.find(:all) @category = Category.find(params[:id]) @category.attributes = params[:category] if request.post? respond_to do |format| format.html { save_category } format.js do @category.save @article = Article.new @article.categories << @category return render(:partial => 'admin/content/categories') end end return end render 'new' end 经过一些测试,我发现每次执行都会停止 @category = Category.find(params[:id]) 错误“无法找到没有ID的类别”.当我打印出来时,Params没有:id哈希.这是因为我必须在创建默认:id字段之前将其保存到数据库中吗? 解决方法
你做错了是试图统一两个本质上不同的行为:新的和编辑.
params是从客户端获取的参数哈希值. 当您创建新对象时,params [:id]保留为空,因为新创建的对象的id属性是服务器的责任,而不是客户端的责任. 编辑现有对象时,params [:id]不为空,因为该对象已存在于数据库中且具有id. params [:id]的含义是“请使用这些属性编辑具有id param [:id]的对象”. 在解释之后,当你在这一行创建一个新对象时: @category = Category.find(params[:id]) 由于params [:id]为空,因此失败. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |