【问题标题】:How to validate form_for elemets together with form_tag elements?如何验证 form_for 元素和 form_tag 元素?
【发布时间】:2012-10-03 17:50:54
【问题描述】:

我有一个form_for 表单,我使用*_tag 方法向其中添加了自定义字段。

对于普通的 form_for 元素,我在模型中进行了验证,但是我不确定应该如何处理我的 text_field_tag 元素。

验证这些字段最优雅的方法是什么?

代码更新:

<%= form_for(@member, :html => {:class => "generic-form"}) do |f| %>
    <% if @member.errors.any? %>
        <div id="error_explanation">
            <h2><%= pluralize(@member.errors.count, "error") %> prohibited this member from being saved:</h2>
        <ul>
            <% @member.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
    <% end %>
        </ul>
    </div>
  <% end %>
  <%= f.label :username, "Username:" %>
  <%= f.text_field :username %>
  <%= f.label :password, "Password:" %>
  <%= f.password_field :password %>
  <%= label_tag "repeatPassword", "Repeat password:" %>
  <%= password_field_tag "repeatPassword" %>
  <%= f.label :email, "Email:" %>
  <%= f.text_field :email %>
  <button type="submit" name="commit">Register</button>
<% end %>

【问题讨论】:

  • 这些自定义字段是属于其他模型,还是根本不属于任何模型?你能发布一些示例代码吗?
  • 我添加了示例代码。 repeatPassword 字段不属于任何模型,它只是用于检查密码是否输入正确。检查它是否不为空并与:password 字段匹配的最优雅的方法是什么?

标签: ruby-on-rails forms validation


【解决方案1】:

我猜你有一个更新/创建成员实例的操作。在此操作中,您可以执行以下操作:

def update
  [...]
  if params[:repeatPassword] == params[:member][:password]
    @member.save
  else
    @member.errors.add('password', 'Passwords werent the same')
    redirect_to :action => :update, :id => params[:id]
  end
  [...]
end

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多