2014-12-03 30 views
0

我已經集成了一個隱藏的字段稱爲暱稱,不應該輸入,如果是,它表明一個機器人正在填寫它,因此不應該處理動作郵件。無檢查窗體參數不工作

這是我必須做此過濾器的代碼:

if params[:nickname] == nil 
    @contact = Contact.create(contact_params) 
    if @contact.save 
    GenericMailer.contact_mailer(@contact).deliver 
    else 
    redirect_to root_path alert: "Oops! It looks like you have entered something incorrectly, please try again." 
    end 
else 
    redirect_to root_path 
end 

形式:

<%= form_for @contact, :url => {:controller => "footerlinks", :action => :contactcreate } do |lead|%> 
    <%= lead.text_field :fullname, :placeholder => "Full name", onfocus: "this.placeholder = ''", onblur: "this.placeholder = 'Full name'" %> 
    <%= lead.text_field :email, :placeholder => "Email", onfocus: "this.placeholder = ''", onblur: "this.placeholder = 'Email'" %> 
    <%= lead.text_area :query, class: "height15", :placeholder => "Query", onfocus: "this.placeholder = ''", onblur: "this.placeholder = 'Query'" %> 
    <%= lead.text_field :nickname %> 
    <%= lead.submit "Send" %> 
<% end %> 

然而,在重新嘗試的形式,它似乎完全繞過if語句,並提供電子郵件儘管暱稱表單字段不爲零。

+0

怎樣的形式或者至少暱稱輸入字段看起來像? – AmShaegar 2014-12-03 20:59:12

+0

加@AmShaegar – 2014-12-03 21:04:58

+0

應該是params [:contact] [:nickaname]那麼,不是?但@ leo-correa也是對的。 – AmShaegar 2014-12-03 21:07:43

回答

1

這可能是params[:nickname]不是零,而是一個空字符串。嘗試做params[:nickname].blank?

+0

嘗試過但它具有相同的效果,非常奇怪! – 2014-12-03 21:05:22

+0

你有沒有看看params哈希裏面的內容?當你做日誌時,日誌會顯示什麼內容? – 2014-12-03 21:06:04

1

您的問題是,params[:nickname]甚至不存在,這意味着它是零, 你有params[:contact][:nickname]

嘗試做

params[:contact][:nickname].blank? # instead of params[:nickname]