【问题标题】:Simple Search Ruby Limitation简单搜索 Ruby 限制
【发布时间】: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

【问题讨论】:

  • 为您的表单标签试试这个:&lt;%= form_tag("/posts", :method =&gt; "get") do %&gt;
  • 示例 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


【解决方案1】:

对于不同的设置,请执行以下操作:

config/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

【讨论】:

    【解决方案2】:

    好吧,这是我的新手错误,form_tag 位于 form 中。

    感谢您的反馈,它迫使我用细齿梳检查所有代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 2013-12-05
      • 2010-12-18
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      相关资源
      最近更新 更多