尝试对局部变量使用验证

时间:2017-06-21 12:36:57

标签: ruby-on-rails ruby validation

所以我一直在尝试使用form_for格式在rails上的ruby上使用验证

我遵循了这个:https://stackoverflow.com/a/33048292/8054234

但是我得到以下错误:

<%= pluralize(object.errors.count, "error") %> prevented the form from being saved:

undefined method `errors' for :user:Symbol

任何想法我如何才能使这项工作/修复它?

edit1上传完整表单代码:

<%= stylesheet_link_tag "users" %>

<div class="jumbotron"
    <div class="container">

    <h2>Signup</h2>


<%= form_for :user, url: '/users' do |f| %>
  <%= form_errors_for :user %>
  Número de Empregado: <br>
  <%= f.number_field :NumeroEmpregado %><br>
  Primeiro e Último Nome: <br>
  <%= f.text_field :nome %><br>
  Password: <br>
  <%= f.password_field :password %><br>
  Confirmação Password: <br>
  <%= f.password_field :password_confirmation %><br>


  <%= f.submit "Submit" %>

    </div>
</div>

<% end %>

2 个答案:

答案 0 :(得分:2)

object必须是ActiveRecord模型的实例。您将:user作为符号传递。

您应该传递User的实例。如果您使用某些身份验证逻辑,则可以将current_user传递给此方法。

UPD:

错误表明您的object无法理解方法errors:user是一个符号。它不是保存用户的变量。因此,它没有实现方法errors

User是一个继承ActiveRecord行为的模型。它提供方法errors。例如,object = User.create(params)将起作用。

答案 1 :(得分:0)

<强> EDITED

UsersController new动作更新中,如下所示

class UsersController < ApplicationController
  def new
    @user = User.new
  end
end

并在您的views/users/_form.html.erb文件表单中执行以下代码

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

  Número de Empregado: <br>
  <%= f.number_field :NumeroEmpregado %><br>

  Primeiro e Último Nome: <br>
  <%= f.text_field :nome %><br>

  Password: <br>
  <%= f.password_field :password %><br>

 Confirmação Password: <br>
 <%= f.password_field :password_confirmation %><br>

 <%= f.submit "Submit" %>

<% end %>