2013-10-22 130 views
0

您好我搜索了很多站点和视频在轨道模型上,但无法找到答案,我有一个网址控制器和网址模型。在控制器我有这个Rails在模型验证中搜索

def search 
@search_term = params[:q] 
st = "%#{params[:q]}%" 
@url = Url.where("email ILIKE ? or custref ILIKE ? or order_number ILIKE ? or url4 ILIKE ?   or trader_code ILIKE ? or trader_name ILIKE ?", st, st, st, st, st, st).order("date  DESC").page(params[:page]).per_page(25) 
respond_to do |format| 
    format.html 
    format.json {render json: @urls} 
end 
end 

和模型只是这个

class Url < ActiveRecord::Base 

    attr_accessible :order_number, :url1, :url2, :url3, :url4, :url5, :email, :custref,   :date, :trader_code, :trader_name 

def self.import(file) 
CSV.foreach(file.path, headers: true) do |row| 
    Url.create! row.to_hash 
end 
end 
belongs_to :user 
end 

然后我用一个部分来呈现的搜索框中的form_tag。

<%= form_tag("/search", :method => "get") do %> 

<%= label_tag(:q, "") %> 
<%= text_field_tag(:q) %> 
<%= submit_tag "Search" %> 

<% end %> 

我的问题是,我不知道如何验证这个form_tag。 我需要验证是否有一个有效的完整电子邮件地址输入到搜索中,我需要验证是否有8个字符输入来搜索order_number。其余的验证我可以找出,但这两个是最重要的。 我在railscast上观看了active_attr的视频,但它对我不起作用。 有没有人在这之前做过这件事可以帮助我?

感谢

+0

本帖](http://stackoverflow.com/questions/5118203/how-do-i-validate运行验证-a-non-model-form-in-rails-3/5118393#5118393)看起来像它有你所需要的。 – CoolTapes

+0

如何以及您想要验证什么?该字段的输入?在服务器上?在客户端?你想把东西去掉吗? – phoet

+0

即时搜索两栏,电子邮件和订单号码,所以我想确保人们输入一个有效的电子邮件地址,并且订单号码需要是确切数量的字符,此刻如果您键入订单的前4个字符数字,然后结果显示db – user2791952

回答

0

另外,您可以在search方法urls_controller的

def search 
    @search_term = params[:q] 
    st = "%#{params[:q]}%" 

    validate_search_query @search_term 

    @url = Url.where("email ILIKE ? or custref ILIKE ? or order_number ILIKE ? or url4 ILIKE ?   or trader_code ILIKE ? or trader_name ILIKE ?", st, st, st, st, st, st).order("date  DESC").page(params[:page]).per_page(25) 
    # you can add if... then... block here to handle empty @url 
    respond_to do |format| 
    format.html 
    format.json {render json: @urls} # guess you should use @url here instead of @urls 
    end 
end 

def validate_search_query (query) 
    # validations for query 
    ... 
end 
+0

谢谢Leger,你有什么想法,我将不得不进入那些空的部分验证我在上面评论中谈到的专栏。对不起,如果我听起来很愚蠢,我只是习惯使用Rails – user2791952