2016-04-14 50 views
-1

我遇到了這個問題,使用rails中的表單處理,並想知道是否有人可以快速查看它。Param缺失或值爲空:在新的

我的觀點看起來像

= 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 

最終我的問題是,我不知道是什麼PARAMS我失蹤。或者即使我的價值是空的,我怎麼知道,我能做些什麼來解決這個問題?

+0

您的「新」動作應該在這裏做什麼? 'new'主要用於實例化一個對象,接着是一個'create'動作,它應該接受你強壯的參數中的白名單參數來創建一個對象。 – dp7

+0

您只需渲染新表單並使用創建操作即可保存您的數據。還可以使用'pry' gem來替換應用程序 – user2322409

回答

2

標準的鋼軌方法表單是你的新動作是一個'GET',用於顯示創建資源的新視圖。表單字段添加到params散列的表單'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 

在終端運行耙路線檢查你的路由,並確保你有一個路由到該點到form_submissions#新form_submissions#創建。

當你點擊提交按鈕,您將可以查看在日誌中傳遞的參數,它應該是這個樣子

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資源?

+0

嘿,非常感謝你,我所需要的只是第二種方法。 – kdweber89

+0

...是的,我知道它聽起來很愚蠢,但我正在創建一個名爲From Submission的資源。 (這不是我的選擇) – kdweber89

1

我認爲你做錯了。

這是你應該做的:

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爲空或默認值。

「創建」動作用於保存您的新資源

相關問題