【问题标题】:Ruby on rails 4: showing error messagesRuby on rails 4:显示错误消息
【发布时间】:2015-05-22 00:58:02
【问题描述】:

我在使用 Ruby on rails 显示无效输入的错误消息时遇到问题。如果有人可以帮助我吗?目前是该地区的新手。

我怀疑该区域是由 :user 和 @user 引起的。

这是我在 index.html.erb 上生成的表单

<%= form_for :user, url: '/login', html:{id:"form"} do |f| %>
            <h2 class="login">Login</h2>
            <div class="form">
                <input type="name" placeholder="Name" name="user[name]" class="form-input" required /></div>

<% end %>

我的 ActiveRecord 模型:

class User < ActiveRecord::Base
    validates :name, :uniqueness => true

    has_secure_password

end

我尝试使用以下错误处理,在&lt;%= form_for :user, url: '/login', html:{id:"form"} do |f| %&gt; 之后传递以下代码,但它不起作用并显示:

Users#register 中的 NoMethodError : nil:NilClass 的未定义方法“错误”

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

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

【问题讨论】:

  • 您需要将@user@article 替换为您的对象实例。

标签: ruby ruby-on-rails-4


【解决方案1】:

你应该可以做这样的事情。

/app/views/shared/_error_messages.html.haml:

- if object.errors.any?
  .alert.alert-danger
    The form contains #{pluralize(object.errors.count, "error")}.
  %ul#error_explanation
    - object.errors.full_messages.each do |msg|
      %li= msg

然后,您希望在视图中显示错误的任何位置,例如:

= render 'shared/error_messages', object: f.object

注意方法中的object。当您调用时,您可以传递来自控制器的对象实例或(在上述情况下)表单构建器的对象。

【讨论】:

    猜你喜欢
    • 2016-11-08
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多