【问题标题】:Rails - Simple Form - style error messagesRails - 简单表单 - 样式错误消息
【发布时间】:2026-02-21 04:30:01
【问题描述】:

我正在尝试在我的视图文件夹中创建一个部分,他共享该文件夹以获取错误消息。

我想删除简单表单标准错误消息并将其替换为我自己的样式 - 在所有模型中。

我的问题是,如何在我的部分中引用相关模型。根据它的使用位置,它需要引用包含部分的表单。

例如,标准的简单形式错误块是:

<% if @question.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@project_question.errors.count, "error") %> prohibited this question from being
        saved:</h2>

      <ul>
        <% @project_question.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
        <% end %>
      </ul>

如何将@question 替换为@[相关模型的名称]?

谢谢

【问题讨论】:

  • 你可以通过locals传入partial

标签: ruby-on-rails simple-form


【解决方案1】:

为此,您可以制作部分 _error_messages,html.erb

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

您可以在视图中将此部分渲染为:

<%= render partial: "error_messages", locals: {model: @question} %>

【讨论】:

    【解决方案2】:

    你的答案是passing a local variablehttp://guides.rubyonrails.org/layouts_and_rendering.html#passing-local-variables

    &lt;%= render partial: "your_partial", locals: {question: @question} %&gt;

    【讨论】: