gpt4 book ai didi

ruby-on-rails - Rails 验证错误未显示

转载 作者:行者123 更新时间:2023-12-03 08:19:36 27 4
gpt4 key购买 nike

出于某种原因,我的验证错误正在被拾取但没有显示在页面上,因为我希望下面是我的模型和新 View 。我还将附上一张我的验证错误被拾取但未显示在 View 中的图片。

Model

class Review < ApplicationRecord
belongs_to :user
belongs_to :tea

validates :title, presence: true
validates :rating, numericality: {only_integer: true, greater_than_or_equal_to: 0, less_than: 11}
validates :tea, uniqueness: {scope: :user, message: "has already been reviewed by you" }

scope :order_by_rating, ->{group(:id).order('avg(reviews.rating) desc')}
end
View
<h1>Write a Review for </h1>

<%= form_for Review.new do |f|%>
<% if @review.errors.any? %>
<h2>Errors:</h2>
<ul>
<% @review.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>

Validation Error

最佳答案

在 Ruby 中有一个约定,方法以 ! 结尾。表示“危险”的方法。该方法要么改变其接收者,要么引发异常。 ActiveRecord::Persistence有正常和“危险”的方法:

  • savesave!
  • createcreate!
  • updateupdate!

  • 后者提出 ActiveRecord::RecordInvalid如果任何验证失败,则异常。当您从种子文件、测试或事务中创建记录时,这非常有用。

    但是,当您通常处理用户输入时,您希望使用正常的 save方法作为无效输入只是生活中的事实,而不是异常事件。如果您依赖将代码更改为 .save!对于调试,您应该真正学会使用 pry 或 byebug 来代替进入代码。

    您还应该修复表单,以便将其绑定(bind)到 @review实例变量,以便用户输入不会被删除。没有人喜欢糟糕的表单,这使得他们重新输入所有内容。
    <%= form_for @review.new do |f|%>
    # ...
    <% end %>

    关于ruby-on-rails - Rails 验证错误未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60875585/

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