Ruby on Rails表单验证Flash页面重新进入

时间:2018-01-17 18:41:40

标签: ruby-on-rails validation

这是一个相当小的事情,但相当烦人。

当我提交空白"创建帐户"表单(显示表单验证错误和样式),然后导航到另一个页面,然后返回到创建帐户页面,表单验证错误仍然在页面刷新前半秒钟。

当页面被移除时,是否有任何方法可以清除这些验证,以便在页面导航回来时它们不会再出现半秒?

查看代码:

<section class="form form_create_account">
  <h2 class="form_header">Create Account</h2>

  <%= form_for(@user, url: create_account_path) do |f| %>

  <%= render 'shared/error_messages' %>

  <%= f.label :first_name %>
  <%= f.text_field :first_name %>
  <% if @user.errors[:first_name].any? %>
    <p class="error_message"><%= @user.errors[:first_name].first %></p>
  <% end %>

  <%= f.label :last_name %>
  <%= f.text_field :last_name %>
  <% if @user.errors[:last_name].any? %>
    <p class="error_message"><%= @user.errors[:last_name].first %></p>
  <% end %>

  <%= f.label :email %>
  <%= f.text_field :email %>
  <% if @user.errors[:email].any? %>
    <p class="error_message"><%= @user.errors[:email].first %></p>
  <% end %>

  <%= f.label :password %>
  <%= f.password_field :password %>
  <% if @user.errors[:password].any? %>
    <p class="error_message"><%= @user.errors[:password].first %></p>
  <% end %>

  <%= f.label :password_confirmation %>
  <%= f.password_field :password_confirmation %>
  <% if @user.errors[:password_confirmation].any? %>
    <p class="error_message"><%= @user.errors[:password_confirmation].first %></p>
  <% end %>

  <%= f.submit "Create Account" %>

<% end %>
</section>

1 个答案:

答案 0 :(得分:0)

有时rails会自动执行此操作,但有时我们需要这样做。使用闪光灯时要特别注意渲染和放大重定向。 渲染时,您需要设置flash.now,而不是普通的闪光灯。

(例如:flash.now [:错误] =&#34;出现问题&#34;渲染,而不是闪光[:错误] =&#34;出现问题&#34;。)

如果您没有,则Flash消息可能不会显示在所呈现的页面上,并且会显示在访问过的下一页上。

这个答案是为了不显示flash [:errors]。您也可以使用隐藏闪存来引用它。

希望这会有所帮助