Ruby on 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:"

我在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:"
    %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的资源。(这不是我的选择)