Rails 5简单的搜索表单就行不通了

时间:2018-05-03 20:24:10

标签: ruby-on-rails forms search

  • 我在所有视图中共享了一个导航栏,在application.html.erb中使用此表单进行渲染:

    <form class="form-inline d-none d-lg-inline-flex">    
      <%= form_tag search_query_path, method: :get do |f| %>
        <%= text_field_tag :query, params[:query], class: "form-control", placeholder: "Search" %>
        <%= submit_tag "Search", name: nil %>
      <% end %>
    </form>
    
  • 我想在Post模型中搜索类似的标题。

  • 这些方法在PostsController中如下:

    def search_query
      @results = Post.find_by_sql("SELECT * FROM posts WHERE title LIKE '%#{params[:query]}%'")
    end
    
    def search_query_params
      params.require(:post).permit(:query)
    end
    
    private :search_query_params
    

问题是:搜索会继续被当前视图的当前控制器处理。如果我是索引页面(在PagesController中),则会在那里进行查询,只需重新加载这样的URL:

http://localhost:3000/?utf8=%E2%9C%93&query=test+title

我已经尝试了所有东西,无法找到我的逻辑错误。

这些是路线:

get '/search_query', to: 'posts#search_query', as: 'search_query'

1 个答案:

答案 0 :(得分:1)

form_tag生成表单元素,因此您在此处将表单嵌套在表单中。尝试删除外部表单。