rails中的简单表单不会显示验证错误消息

时间:2015-05-06 14:10:17

标签: ruby-on-rails validation simple-form

我的应用中有simple_form,但它没有显示任何验证错误消息:

<%= simple_form_for(@user) do |f| %>

     <%= f.error_notification %>

    <%= f.input :first_name, label: "Prénom" %>
    <%= f.input :last_name, label: "Nom" %>
    <%= f.input :email, label:"email" %>
    <%= f.input :telephone, label: "telephone"%>

    <p><%= f.label :birthdate, 'Date de naissance' %></p>
    <%= f.date_select :birthdate, {:include_blank => true, :default => nil, :use_month_names => ['Janv.','Fevr.', 'Mars', 'Avr.', 'Mai', 'Juin', 'Juil.', 'Août','Sept.', 'Oct.', 'Nov.', 'Déc.'], :order => [:day, :month, :year], :start_year => 1910, :end_year => 1995} %>
     <%= f.input :genre, label: "Sexe" %>
    <%= f.input :ranking, label:"Classement" %>
    <%= f.input :licence_number, label: "numéro de licence"%>
    <p>
      <%= f.label :Photo%>
      <%= f.file_field :picture %>
    </p>
    <p>
    <%= f.label :licence %>
    <%= f.file_field :licencepicture %>
    </p>
    <p>
    <%= f.label :certificat %>
    <%= f.file_field :certifmedpicture %>
    </p>
    <div id="validation"><%= f.submit %></div>
    <% end %>

以下是我的用户模型中的验证

 validates :first_name, presence: { strict: true }, on: :update
 validates :last_name, presence: { strict: true }, on: :update

您可以查看我的simple_form.en.yml

en:
simple_form:
"yes": 'Yes'
"no": 'No'
required:
  text: 'required'
  mark: '*'
  # You can uncomment the line below if you need to overwrite the whole required html.
  # When using html, text and mark won't be used.
  # html: '<abbr title="required">*</abbr>'
error_notification:
  default_message: "Certains champs posent problèmes:"

我的update方法:

def update
  @user.update(user_params)
  @user.create_mangopay_natural_user_and_wallet
  redirect_to user_path(current_user)
end

我不知道为什么错误通知不会显示,因为我在视图中有f.error_notification

1 个答案:

答案 0 :(得分:1)

如您的评论所示,您的控制器无法检查是否成功保存,只是盲目地重定向到用户页面。我没有看到simple_form的任何本机功能为您执行此操作。您需要检查此成功保存并在失败时重新呈现编辑表单,以便它可以在f.error_notification中显示这些错误:

def update
  if @user.update(user_params)
    @user.create_mangopay_natural_user_and_wallet
    redirect_to user_path(current_user)
  else
    render 'edit'
  end
end