簡體   English   中英

如何顯示名稱空間的驗證錯誤? Ruby on Rails

[英]How do I display validation errors with namespaces? Ruby on rails

我不知道該怎么做。.我在用戶控制器中,該用戶控制器位於名為admin的命名空間內,這就是我的表單的樣子:

<%= form_for [:admin, @user] do |f| %>
    <% if @user.errors.any? %>
        <div class="reg-error">  
            <h4>Could not send registration!</h4>
            <ul>
                <% for message in @user.errors.full_messages %>
                    <li><%= message %></li>
                <% end %>
            </ul>
        </div>
    <% end %>
    <%= f.label :email %><br>
    <%= f.text_field :email %><br><br>
    <%= f.label :rank %><br>
    <%= f.select :rank, options_for_select([1, 2, 3, 4, 5]) %><br><br>
    <%= f.submit "Send registration", :confirm => "Are you sure?" %>
<% end %>

如您所見,我正在為表單使用[:admin, @user] ,但是僅替換@user.errors.any?不能用@user.errors.any? [:admin, @user].errors.any?

它本身的形式可以正常工作,但不會顯示驗證錯誤。

我該怎么做呢?

更新-解決

我沒有向您展示我的控制器,但在那里發現了錯誤。

if @user.save
  UserMailer.invitation_mail(@user).deliver
  redirect_to admin_manage_users_path, :notice => "Successfully added a new account! Mail has been sent"
else
  @user = User.new
  @registered_users = User.where(:reg_key => nil)
  @pending_users = User.where("users.reg_key IS NOT NULL")
  render "show"
end

由於我在else語句中有一個@user = User.new ,因此它以某種方式重置了錯誤消息。 完全錯過了那個。 如果其他人也會犯這個簡單的錯誤,我也將在這里保留。.感謝您的答復。

嘗試進行以下更改:

form_for @user do |f|
  if @user.errors.any?
    ...
    @user.errors_full_messages.each do |message|
      <li><%= message %></li>

如果那不起作用,您可以告訴我您的控制器是什么樣的。 例如,在users_controller新方法中,您正在執行以下操作:

@user = Admin::User.new

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM