【问题标题】:Rendering devise error messages in scoped custom form以范围自定义形式呈现设计错误消息
【发布时间】:2013-12-03 06:47:57
【问题描述】:

我必须设计模型,UserVendor。我为供应商生成了视图并自定义了注册表单以满足我的需求。我需要调整供应商的注册控制器,如下所示:

控制器/供应商/registrations_controller.rb

class Vendors::RegistrationsController < Devise::RegistrationsController
    skip_before_filter :require_no_authentication
    def create
        super
    end

    protected

    def sign_up(resource_name, resource)
        true
    end

    def new
        super
    end
end

我的 Vendor 注册视图如下所示:

views/vendors/registrations/new.html.erb

<h2>Sign up</h2>

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => {:multiparet => :true} ) do |f| %>
  <%= devise_error_messages! %>

    <div><%= f.label :store_name %>
    <%= f.text_field :store_name %></div>

      <div><%= f.label :contact_name %>
    <%= f.text_field :contact_name%></div>

      <div><%= f.label :contact_phone %>
    <%= f.text_field :contact_phone %></div>

      <div><%= f.label :address %>
    <%= f.text_field :address %></div>

      <div><%= f.label :image %>
    <%= f.file_field :image %></div>

  <div><%= f.label :email %>
  <%= f.email_field :email, :autofocus => true %></div>

  <div><%= f.label :password %>
  <%= f.password_field :password %></div>

  <div><%= f.label :password_confirmation %>
  <%= f.password_field :password_confirmation %></div>

  <div><%= f.submit "Sign up" %></div>
<% end %>

<%= render "vendors/shared/links" %>

当我尝试渲染页面时,我收到此错误:

undefined method `errors' for nil:NilClass

在这种情况下如何呈现设计错误消息?提前致谢!

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:

    我会把这个写成评论,但作为答案会更容易阅读:

    也许您可以尝试用标准的 Rails 错误显示替换 devise_error_messages!

    <% if resource.errors.any? %>
        <div class="error">
            <strong><%= pluralize(resource.errors.count, "Error") %></strong>
            <ul>
                <% resource.errors.each do |attr,msg| %>
                    <li><%= msg %></li>
                <% end %>
            </ul>
        </div>
    <% end %>
    

    【讨论】:

    • 嗯……这对我不起作用。我收到 undefined method 'errors' for nil:NilClass 错误。
    • 这里的问题是 Devise 在错误时呈现“新”默认模板而不是您的自定义表单,我有这个完全相同的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多