简单搜索Ruby限制

时间:2016-06-20 07:46:33

标签: ruby-on-rails ruby ruby-on-rails-4 search

我已经在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

2 个答案:

答案 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 位于形式

感谢反馈,它迫使我用细齿梳理所有代码。