【问题标题】:Display form error message without reloading the page在不重新加载页面的情况下显示表单错误消息
【发布时间】:2021-04-08 15:07:57
【问题描述】:

在 Rails 6.1 应用程序中,我已将新操作从单独的页面移动到模式,现在我试图确定是否可以仅显示错误消息(如果它存在,例如“名称可以't be blank")直接在表单中,而不是重新加载整个页面。 因为即使在这种情况下,我也不知道如何直接重新加载表单并显示错误消息。

  def create
    @list = List.new(list_params)

    if @list.save
      redirect_to list_path(@list)
    else
      redirect_to root_path
    end
  end

这是使用 simple_form 创建的模态中的表单

 <%= simple_form_for(@list) do |f| %>
          <%= f.error_notification %>
          <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
          <div class="form-inputs my-3">
            <%= f.input :name, required: true %>
          </div>
          <div class="form-actions">
            <%= f.button :submit %>
          </div>
        <% end %>

另一种解决方案是使用闪烁,但如果错误消息直接显示在表单中而不重新加载整个页面,我会更高兴。

如果有帮助,现在是my project

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-6.1


    【解决方案1】:

    我建议您将client_side_validations gem 与client_side_validations-simple_form 结合使用,因为您使用的是simple_form。它可以满足您的需求。

    【讨论】:

    • 哦,这正是我想要的!谢谢。我试图实现它,但不知何故它不起作用。也许与配置有关。我从文档中不明白的是,如果@list.save 为假,我应该重定向到哪个路径?
    • 如果为false则不需要更改控制器配置,因为当出现错误时,插件会在字段下方显示错误(就像simple_form一样,但不会重新加载页面)。控制台中的javascript是否有任何错误?
    • 控制台不显示错误信息。我得到的唯一行为是,一旦我尝试保存一个未命名的列表,该按钮会将值从“保存”(由我分配)更改为“创建列表”。我已经为这个分支创建了一个拉取请求,如果你想看看它PR
    • 我无法在本地运行您的项目,因为我从 bundle 中得到了所有类型的错误,我正在使用 rails 5 ? 但仔细查看您的代码,我可以看到您只有 2 个详细信息可能错过了:Gemfile 中的 gem 的顺序,文档提到顺序很重要,所以你需要输入这个 exact 顺序:simple_form > client_side_validations > client_side_validations-simple_form。你把 simple_form 最后,这可能是导致问题的原因。另外,我认为您不需要 client_side_validations 初始化程序中的代码,您可以评论所有内容
    • 我以为订单是为了安装。我在 vs 代码中有一个扩展,可以在保存文本时对其进行格式化,这就是宝石按字母顺序排序的原因。无论如何,我已经尝试更改文档中提到的 Gemfile 中的顺序,并且还注释掉了配置文件,但不幸的是没有更改。
    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    相关资源
    最近更新 更多