所以我一直在尝试使用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 %>
答案 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 %>