【发布时间】:2023-04-11 00:37:01
【问题描述】:
在我的项目中添加一些 gem 后,我的表单不再创建条目。
我添加了devise 和active admin,之后我的表单提交停止工作。
当我尝试调试时,我收到了这条消息:
# posts_controller.rb
def create
render plain: params[:post].inspect
end
输出:
<ActionController::Parameters {"firstname"=>"Andreas", "lastname"=>"", "street"=>"", "city_code"=>"", "city"=>"", "state"=>"", "country"=>""} permitted: false>
这是生产代码:
def create
@post = Post.new(post_params)
if(@post.save)
redirect_to @post
else
render 'new'
end
end
它提交表单但不会生成数据库条目。 有什么想法吗?
【问题讨论】:
-
在
render 'new'行之前检查@post.errors,看看是否有验证错误。 -
我只是把
@post.errors放在render的那一行?这给了我一个undefined method "errors" for nil:NilClass。或者我该怎么做?服务器日志对此有帮助吗?Started POST "/posts" for 127.0.0.1 at 2018-02-15 16:34:16 +0100 Processing by PostsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"dD230A0PIRSM3Z0nnMU14vZbB610CDOFc80OzHNhZe7HcfEha0LzHUZCCx3xUCxujlKK5AXapr/ahpnMZ/RB5A==", "post"=>{"firstname"=>"Test" }, "commit"=>"Save Post"} Completed 401 Unauthorized in 2ms (ActiveRecord: 0.0ms) -
在
else块内添加一行,在您的render语句之前:puts @post.errors.messages,然后在您尝试创建新帖子时查看您的服务器控制台。 guides.rubyonrails.org/… -
可以把 post_params 方法放上去吗?
标签: ruby-on-rails forms actioncontroller