简单轨道表单接受数据,但闪烁显示未保存



大家好,我现在很困,我的表单似乎在接受数据,刷新,但没有将其保存到数据库中,因为它仍然闪烁"条目未保存";单击保存时。此外,在检查控制台时,没有保存刚刚填写的数据。我不确定问题出在哪里。这是我所拥有的:

控制器:

class SubmissionsController < ApplicationController
def index
@submissions = Submission.all
end
def new
@submission = Submission.new
end
def create
@submission = Submission.new(params[:submission])
if @submission.save
redirect_to("/submissions/new")
flash[:alert] = "Entry saved."

else
redirect_to("/submissions/new")
flash[:alert] = "Entry not saved."
end
end
def update 
end
def submission_params
params.require(:submission).permit(:first_name, :last_name, :email, :content)
end

结束

型号:

class Submission < ApplicationRecord
validates :content, {presence: true, length: {maximum: 50}}
validates :first_name, {presence: true}
validates :last_name, {presence: true}
validates :email, {presence: true}
end

New.html.erb:

<%= form_with model: @submissions do |f| %>
<%= f.label :first_name %>
<%= f.text_field :first_name %>
<%= f.label :last_name %>
<%= f.text_field :last_name %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :content %>
<%= f.text_area :content %>
<%= f.submit %>
<% end %>

日志:

Started GET "/submissions/new" for ::1 at 2020-11-26 14:50:42 +0100
Processing by SubmissionsController#new as HTML
Rendering submissions/new.html.erb within layouts/application
Rendered submissions/new.html.erb within layouts/application (Duration: 11.6ms | Allocations: 4519)
[Webpacker] Everything's up-to-date. Nothing to do
Completed 200 OK in 84ms (Views: 82.4ms | ActiveRecord: 0.0ms | Allocations: 11939)

路线:

root to: 'home#index'
get "riders/index" => "riders#index"
get "submissions/index" => "submissions#index"
get "submissions/new" => "submissions#new"
post "submissions/new" => "submissions#create"
get "home/location" => "home#location"
get "photos/index" => "photos#index"

我是Rails的新手,所以任何帮助都将不胜感激。我花了几个小时寻找答案,但到目前为止一无所获。

在控制器#创建操作中,您需要更改行:

@submission = Submission.new(params[:submission])

至:

@submission = Submission.new(submission_params)

现在日志告诉您缺少param提交或值为空。这是因为在你的控制器#新你得到:

@submission = Submission.new

但在你的状态下,你得到了@submissionS。因此,为了修复错误/问题,将表单更改为@submit,末尾不带s。

最新更新