这应该很容易,但我不确定为什么它不起作用。我在导航栏中有一个搜索表单。当我在posts / index中的导航栏中进行搜索时,我可以毫无问题地获得搜索结果。如下图所示:
http://localhost:3000/posts?utf8=✓&query=technology
但是,当我去帖子/显示并进行搜索时,搜索不会将我重定向到帖子/索引以提供结果。相反,我得到了以下内容。
http://localhost:3000/categories/history?utf8=✓&query=technology.
pry的输出。
[1] pry(#<CategoriesController>)> params
=> {"utf8"=>"✓", "query"=>"technology", "controller"=>"categories", "action"=>"show", "id"=>"history"}
代码如下:
查看/布局/ _navigation.html.erb
<%= form_tag({:controller => "posts", :action => "index"}, method: :get) do %>
<div class="form-group">
<%= text_field_tag :query, params[:query], class: "form-control", placeholder: "Search Here" %>
</div>
<%= submit_tag "Search", name: nil, class: "btn btn-default" %>
<% end %>
的routes.rb
resources :posts
resources :categories
提前致谢。
1)从Safari检查元素添加图片
2)我也说错了#34; ...当我去帖子/表演和行为......&#34;它应该是&#34; ...当我去分类/表演和行为......&#34;
根据评论的要求,以下是一些需要考虑的其他信息。
查看/布局/ _navigation.html.erb
<li>
<form class="navbar-form navbar-left">
<%= form_tag({:controller => "posts", :action => "index"}, method: :get) do %>
<div class="form-group">
<%= text_field_tag :query, params[:query], class: "form-control", placeholder: "Search This Page" %>
</div>
<%= submit_tag "Search", name: nil, class: "btn btn-default" %>
<% end %>
</form>
</li>
视图/类别/ show.html.erb
<div id="wrapper">
<div id="columns">
<% @category.each do |post| %>
<%= render 'posts/post', post: post %>
<% end %>
</div>
</div>
<%= will_paginate @category %>
视图/帖/ show.html.erb
<div id="wrapper">
<div id="columns">
<% @posts.each do |post| %>
<%= render 'post', post: post %>
<% end %>
</div>
</div>
<%= will_paginate @posts %>
另外,请在下面找到帖子/索引和类别/节目的其他截图。
答案 0 :(得分:2)
这是你的问题:
<form class="navbar-form navbar-left">
<%= form_tag({:controller => "posts", :action => "index"}, method: :get) do
form_tag
会为您生成<form>
元素。现在您已经嵌套了表单元素,并且顶部的元素被认为是表单。移除<form class="navbar-form navbar-left">
并添加到form_tag
:class => 'navbar-form navbar-left'
作为另一种选择。