我已经在Koren Leslie Cohen的以下教程的指导下在Ruby on Rails中实现了一个简单搜索。搜索工作正常如果您已经在index.html.erb视图中出现。例如,如果您在show.html.erb视图中搜索无法工作,则只是将搜索附加到当前视图URL的末尾。
示例: HTTP://本地主机:3000 /后/你好%20World UTF8 =✓&安培;搜索第一=
以下是什么工作。
示例: HTTP://本地主机:3000 /帖UTF8 =✓&安培;搜索=你好
问题是如何让简单搜索重定向到index.html.erb页面,然后将相关搜索过滤器应用于该视图?或者,有更好的方法可以实现这个吗?
以下是代码参考
_header.html.erb
<%= form_tag(posts_path(), :method => "get") do %>
<%= text_field_tag :search, params[:search], placeholder: "Search Posts", class: 'form-control' %>
<% end %>
posts_controller.rb
def index
# The following arranges for pagination on the index page
@posts = Post.paginate(page: params[:page], per_page: 10)
if params[:search]
@posts = Post.search(params[:search]).paginate(page: params[:page], per_page: 10)
elsif params[:category_groups_id]
@posts = Post.where(:category_groups_id => params[:category_groups_id]).paginate(page: params[:page], per_page: 10)
else
@posts = Post.paginate(page: params[:page], per_page: 10)
end
end
post.rb
def self.search(search)
where("name LIKE ?", "%#{search}%")
end
答案 0 :(得分:0)
对于不同的设置,请执行以下操作:
<强>配置/ routes.rb中强>
get 'search' as 'posts#index'
<强> _header.html.erb 强>
<%= form_tag(search_path) do %>
<%= text_field_tag :search, placeholder: "Search Posts", class: 'form-control' %>
<% end %>
这足以让您的搜索表单操作指向/posts?search=xyz
答案 1 :(得分:0)
好的,我的新手错误, form_tag 位于形式。
感谢反馈,它迫使我用细齿梳理所有代码。