您好我在rails casts上搜索了很多网站和视频,但找不到答案,我有一个urls控制器和网址模型。在控制器中我有这个
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
然后我使用partial来渲染搜索框的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 :(得分:0)
或者,您可以在urls_controller的search
方法
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