Ruby on rails 参数丢失或值为空:在新的
我在rails中使用表单时遇到了这个问题,我想知道是否有人可以快速查看一下它 我的看法是Ruby on rails 参数丢失或值为空:在新的,ruby-on-rails,Ruby On Rails,我在rails中使用表单时遇到了这个问题,我想知道是否有人可以快速查看一下它 我的看法是 = form_for @form_submission do |f| - if @form_submission.errors.any? #error_explanation %h2= "#{pluralize(@form_submission.errors.count, "error")} prohibited this form_submission from being saved:"
= form_for @form_submission do |f|
- if @form_submission.errors.any?
#error_explanation
%h2= "#{pluralize(@form_submission.errors.count, "error")} prohibited this form_submission from being saved:"
%ul
- @form_submission.errors.full_messages.each do |msg|
%li= msg
…我的控制器就是这样
class FormSubmissionsController < ApplicationController
invisible_captcha only: [:create], on_spam: :handle_spam
def new
@form_submission = FormSubmission.new(form_submission_params)
if @form_submission.save
redirect_to thank_you_path
else
redirect_to root_path
end
end
private
def handle_spam
redirect_to root_path
end
def form_submission_params
params.require(:form_submission).permit(:first_name, :last_name, :organization, :email, :phone)
end
end
class FormSubmissionsController
归根结底,我的问题是我不知道我错过了什么。或者,即使我的值是空的,我怎么知道,我能做些什么来解决这个问题呢?表单的标准rails方法是您的新操作是“GET”,用于显示创建资源的新视图。将表单“POST”添加到创建操作,并将表单字段添加到参数散列中。您的控制器方法应该是
def new
@form_submission = FormSubmission.new
end
def create
@form_submission = FormSubmission.new(form_submission_params)
if @form_submission.save
redirect_to thank_you_path
else
redirect_to root_path
end
end
通过在终端中运行rake routes来检查您的路由,并确保您有到该点的路由,以形成#提交#新建和形成#提交#创建
当您单击submit按钮时,您将能够查看在日志中传递的参数,它应该类似于
Parameters: {"utf8"=>"✓", "authenticity_token"=>"someRandomStuff", "form_submission"=>{"first_name"=>"value entered in first_name field", "last_name"=>"value entered in last_name field"}, "commit"=>"Value of submit button"}
你真的在创建一个名为FormSubmission的资源吗?我认为你做得不对 这就是你应该做的:
def new
@form_submission = FormSubmission.new
end
def create
@form_submission = FormSubmission.new(form_submission_params)
if @form_submission.save
redirect_to thank_you_path
else
redirect_to root_path
end
end
如评论所说,
“新建”操作用于将ressource初始化为空或默认值
“创建”操作用于保存您的新资源您的
新
操作在这里应该做什么new
主要用于实例化对象,然后执行create
操作,该操作应接受强参数中的白名单参数以创建对象。在执行新操作时,只需呈现新表单,使用create操作即可保存数据。也可以使用pry
gem来卸载appsHey非常感谢,我所需要的只是第二种方法……是的,我知道这听起来很愚蠢,但我正在创建一个名为From Submission的资源。(这不是我的选择)