【发布时间】:2016-06-20 07:46:32
【问题描述】:
在Koren Leslie Cohen 的以下教程的指导下,我在 Ruby on Rails 中实现了简单搜索。 如果您已经出现在 index.html.erb 视图中,搜索工作正常。例如,如果您在 show.html.erb 视图中搜索失败,它只是将搜索附加到当前视图 URL 的末尾。
示例: http://localhost:3000/post/Hello%20World?utf8=✓&search=first
以下是有效的。
示例: http://localhost:3000/posts?utf8=✓&search=hello
问题是如何让简单的搜索重定向到 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
【问题讨论】:
-
为您的表单标签试试这个:
<%= form_tag("/posts", :method => "get") do %> -
示例 1 是附加 '/Hello%20World' 。它从哪里来?你在绑它/搜索它?这个例子不能正常工作?对吗?
-
@AwaisShafqat 当我在帖子的 show.html.erb 中并尝试搜索它时,会将搜索查询附加到 URL 的末尾。
-
@TheF 它仍然将搜索查询附加到 URL 的末尾,它不会重定向到我希望应用搜索条件过滤器的 index.html.erb。
-
好的。用“posts_path”替换“posts_path()”。它不起作用。其次将 'params[:search]' 替换为 ' ' 空字符串或 nil 然后再试一次。
标签: ruby-on-rails ruby ruby-on-rails-4 search