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