快速提问。我正在尝试设置一个使用开始日期,结束日期和关键字搜索数据库的页面。如果我要搜索19-07-2012,路径看起来像
?搜索UTF8 =%E2%9C%93&安培;项目%5Bstart_date%5D = 2012-07-19&安培;项目%5Bend_date%5D =安培;%5Bstatus%5D =安培;关键字=
并显示所有结果。但是,当我搜索关键字时,搜索工作正常。我看不出我哪里出错了。
<h1>Search</h1>
<%= form_tag search_path, method: :get do %>
Start Date :
<%#= text_field_tag :start_date, params[:start_date] %></br>
<div class="field">
<%= datepicker_input "project","start_date" %></br>
</div>
End Date :
<%#= text_field_tag :end_date, params[:end_date] %></br>
<%= datepicker_input "project","end_date" %></br>
Status :
<%= select(@projects, :status, Project.all.map {|p| [p.status]}.uniq, :prompt => "-Any-", :selected => params[:status]) %></br>
Keywords :
<%= text_field_tag :keywords, params[:keywords] %></br>
<%= submit_tag "Search", name: nil %>
<% end %>
位指示:
def search
@project_search = Project.search(params[:start_date], params[:end_date], params[:keywords]).order(sort_column + ' ' + sort_direction).paginated_for_index(per_page, page)
@project = Project.new(params[:project])
respond_to do |format|
format.html # search.html.erb
format.json { render :json => @project }
end
end
编辑:
当我使用字符“q”作为关键字进行搜索,并且开始日期为25-07-2012时,sql看起来像这样
Parameters: {"utf8"=>"✓", "project"=>{"start_date"=>"25-07-2012", "end_date"=>""}, "status"=>"", "keywords"=>"q"}
Project Load (0.4ms) SELECT "projects".* FROM "projects"
(0.2ms) SELECT COUNT(*) FROM "projects" WHERE (client LIKE '%%' AND industry LIKE '%%' AND role LIKE '%%' AND tech LIKE '%%' AND business_div LIKE '%%' AND project_owner LIKE '%%' AND exception_pm LIKE '%%' AND status LIKE '%%' AND start_date LIKE '%%' AND end_date LIKE '%%' AND keywords LIKE '%q%')
这似乎只搜索关键字“q”。当我删除关键字并保留日期时,sql看起来像:
Parameters: {"utf8"=>"✓", "project"=>{"start_date"=>"25-07-2012", "end_date"=>""}, "status"=>"", "keywords"=>""}
Project Load (0.3ms) SELECT "projects".* FROM "projects"
提前感谢您提供任何帮助!
答案 0 :(得分:1)
我已经解决了自己的问题。我更改了我的application.js文件和我的搜索视图。
的application.js:
jQuery(function(){
jQuery('#start_date').val("");
jQuery('#start_date').datepicker({dateFormat: 'dd-mm-yy'});
});
jQuery(function(){
jQuery('#end_date').val("");
jQuery('#end_date').datepicker({dateFormat: 'dd-mm-yy'});
});
搜索视图:
Start Date :
<%= text_field_tag("start_date") %></br>
End Date :
<%= text_field_tag("end_date") %></br>
我的应用程序现在搜索开始日期和结束日期。
答案 1 :(得分:0)
如果你的代码是正确的,你希望打电话给
Project.search(start_date, end_date, keywords)
在你的例子中,参数进入
project: {
start_date: "25-07-2012",
end_date: ""
},
keywords: "q"
但你打电话
Project.search(params[:start_date], params[:end_date], params[:keywords])
如果您的日志正确,则应致电
Project.search(params[:project][:start_date], params[:project][:end_date], params[:keywords])