我在所有视图中共享了一个导航栏,在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'
答案 0 :(得分:1)
form_tag
生成表单元素,因此您在此处将表单嵌套在表单中。尝试删除外部表单。