ruby-on-rails - Rails 5 简单的搜索表单不起作用
问题描述
我有一个导航栏,通过在 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'
解决方案
form_tag
生成一个表单元素,因此您在此处将一个表单嵌套在一个表单中。尝试删除外部形式。
推荐阅读
- c# - MetadataType 属性不适用于 .net 5 中的 webapi
- javascript - 如何在for循环中更改django模板中的变量?
- javascript - 如何从存在于 Getnote.vue 中的 notes[] 数组中获取 id 并基于该 ID 如何更新特定卡?
- java - Spring Data JPA - 在创建期间将嵌套对象与父级链接
- html - 为什么我的文字没有出现在我的背景图片上?
- python - 从包内的文件夹加载数据
- macos - 涉及“net/http”和“time”包的特定golang测试的链接器命令失败
- html - 如何将一个网站嵌入另一个网站?
- .net-core - 如何使用 YAMLDONET 和 C# 将 YAML 数据转换为 HTML 表?
- javascript - 错误 Javascript 中的速记属性初始值设定项无效