2012-10-03 30 views
0

我有一個form_for表格,我使用*_tag方法添加了自定義字段。如何驗證form_for元素以及form_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 %> 
+0

這些自定義字段是否屬於某個其他模型,或根本沒有模型?你能發佈一些示例代碼嗎? – cdesrosiers

+0

我添加了示例代碼。 'repeatPassword'字段不屬於任何模型,它只是在那裏檢查密碼是否是正確的。檢查它是否爲空並匹配':password'字段的最優雅的方法是什麼? – Eleeist

回答

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 

希望這有助於!