gpt4 book ai didi

ruby-on-rails - 使用 form_with 不显示错误

转载 作者:行者123 更新时间:2023-12-04 02:02:20 26 4
gpt4 key购买 nike

早上好。

我正在学习教程 http://edgeguides.rubyonrails.org/getting_started.html我发现以下内容:

我有一个名为 ArticlesController 的 Controller 。 create 方法使用“if @article.save”语句来保存@article 对象,如果出现问题则渲染'new'。类似地,update 方法使用“if @article.update (article_params)”来更新该文章的记录,如果出现问题,则呈现“edit”。

在新 View 和编辑 View 中 <% if @ article.errors.any? %> 用于确定是否有任何错误并显示相应的消息,但问题是在新 View 中工作正常,但在编辑 View 中@article.errors.any View ?即使有错误也返回 false。

谁能告诉我哪里出了问题。非常感谢。

然后我放入 ArticlesController 类、 View new.html.erb 和 edit.html.erb,以及文章模型。


class ArticlesController < ApplicationController
def new
@article = Article.new
end

def edit
@article = Article.find(params[:id])
end

def update
@article = Article.find(params[:id])

if @article.update(article_params)
redirect_to @article
else
render 'edit'
end
end

def index
@articles = Article.all
end

def show
@article = Article.find(params[:id])
end

def create
@article = Article.new(article_params)

if @article.save
redirect_to @article
else
render 'new'
end
end

private

def article_params
params.require(:article).permit(:title, :text)
end
end

------------------------------------------------------------------

<h1>New Article</h1>

<%= form_with scope: :article, url: articles_path, local: true do |form| %>

<% if @article.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(@article.errors.count, "error") %> prohibited
this article from being saved:
</h2>
<ul>
<% @article.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>

<p>
<%= form.label :title %><br>
<%= form.text_field :title %>
</p>

<p>
<%= form.label :text %><br>
<%= form.text_area :text %>
</p>

<p>
<%= form.submit %>
</p>
<% end %>
<%= link_to 'Back', articles_path %>

----------------------------------------------------------------------

<h1>Edit article</h1>

<%= form_with(model: @article) do |form| %>

<% if @article.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(@article.errors.count, "error") %> prohibited
this article from being saved:
</h2>
<ul>
<% @article.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>

<p>
<%= form.label :title %><br>
<%= form.text_field :title %>
</p>

<p>
<%= form.label :text %><br>
<%= form.text_area :text %>
</p>

<p>
<%= form.submit %>
</p>

<% end %>

<%= link_to 'Back', articles_path %>

---------------------------------------------------------------------

class Article < ApplicationRecord
validates :title, presence: true,
length: { minimum: 5 }
validates :text, presence: true
end

最佳答案

form_with生成的所有表单默认都会通过XHR(Ajax)请求提交。如果您想禁用远程表单,那么您可以像在 new.html.erb 中的表单中那样使用本地表单。 在你的 edit.html.erb 中改变这个:

<%= form_with model: @article, local: true do |form| %>

关于ruby-on-rails - 使用 form_with 不显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46344681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com