Ruby on rails Rails 5:同一页面上的两个搜索表单标签

Ruby on rails Rails 5:同一页面上的两个搜索表单标签,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我试图在同一个页面上实现一个两个搜索表单标签,每个搜索表单都放在动态引导选项卡中。第一个正在工作的是一个带有一个字段的基本搜索表单。第二个不起作用的有两个字段,一个是与第一个相同的搜索方法,另一个是我试图从其他位置字段和通过参数[:其他位置]获取地址。 在当前设置下,其他位置字段表单第二个表单不会出现 这两个表单都在partials中,我在两个动态引导选项卡中呈现它们,如下所示: <%= render 'pages/search' %> <%= render 'pages/se

我试图在同一个页面上实现一个两个
搜索表单标签
,每个搜索表单都放在
动态引导选项卡中
。第一个正在工作的是一个带有一个字段的基本搜索表单。第二个不起作用的有两个字段,一个是与第一个相同的搜索方法,另一个是我试图从
其他位置
字段和通过
参数[:其他位置]
获取地址。 在当前设置下,
其他位置
字段表单第二个表单不会出现

这两个表单都在partials中,我在两个
动态引导选项卡中呈现它们,如下所示:

<%= render 'pages/search' %>
<%= render 'pages/search_other' %>


<%= form_tag search_items_path, :method => "get" do %>
<%= text_field_tag :search, params[:search], autofocus: true,
                   class: "search-query search_size",
                   placeholder: "Enter product to search" %>
<%= submit_tag "Search", name: nil, :style => "display: none;" %>
<%end%>


<%= form_for :search_other_path, :method => "get" do |form| %>
<%= form.text_field :search, autofocus: true,
                   class: "search-query search_size",
                   placeholder: "Enter keyword to search" %>

  <% form.fields_for :other_location_path, :method => "get" do |f| %>
  <%= f.text_field :other_location, class: "search-query search_size",
                     placeholder: "Enter address to search" %>

<%= form.submit "Search", name: nil, :style => "display: none;" %>
<%end%>
<%end%>
routes.rb

get 'search' => 'pages#search', as: 'search_posts'
get 'search' => 'pages#search_other', as: 'search_other'
get 'search' => 'pages#other_location', as: 'other_location'
控制器:

def search_other
  if params[:search]
    @posts = Post.near(other_location,10).search(params[:search]).page(params[:page])
  else
    @posts = []
  end
end

def other_location
  other_location = params[:other_location]
  if params[:other_location]
  Geocoder.search(params[:other_location])
  end
end


def search
  if params[:search]
    @posts = Post.near(action,10).search(params[:search]).page(params[:page])
  else
    @posts = []
  end
end
在路由文件上:

get 'search/other' => 'pages#search_other', as: 'search_other'
get 'search' => 'pages#search_other', as: 'search_other_items'
这两个GET请求都将转到您的页面_controller.rb 35;
搜索_other
方法。因此,即使您有两个
表单标签
将数据发送到不同的路径(
搜索其他路径
,和
搜索其他项目路径
),它也会转到相同的控制器方法-这是多余的

在实际的HTML上,有两个表单标记:

<%= form_tag search_items_path, :method => "get" do %>
“get”do%>

“get”do%>
你没有在你的路线中提到
搜索项目\u路径
,所以我不知道它指向哪里。很可能这是一个合适的控制器,因为您提到第一个表单是唯一有效的

现在,您提到的控制器只有一个
search
方法。因此,首先,您看到的控制器是错误的。您应该查看表单操作引用的控制器方法

在本例中,第二个表单将其请求发送到
search\u other\u items\u path
,该路径根据您的路由指向
pages\u controller.rb
->
\search\u other
方法


您应该编辑您的问题,以包含实际相关的代码。也许我真的能帮上忙。

添加一些控制台日志。因为您使用的是“动态引导选项卡”,所以可能是JS问题。所以,如果浏览器控制台中有任何错误,也要添加它们。@Vlad奇怪的是,我没有收到任何错误。。似乎在我按enter键后,
搜索fom_标记
没有加载。不知道怎么了!如果您使用的是turbolinks,则第二个表单对象引用丢失,因此为了进行调试,请删除turbolinks并检查。感谢@vivek singh的回复,不,我没有使用turbolinks
,即使我在同一页面上使用相同的精确搜索
表单标签
,也没有使用
引导选项卡
,一个
search\u form\u标签不起作用!你知道为什么会这样吗?谢谢你的回复和帮助@mhz。。。是的,我注意到了,我忘了更改路由和其他一些变量和模型名。但这没有帮助,它仍然不起作用。我用所有正确的信息更新了这个问题。看一看,让我知道你的想法!谢谢您的第二个表单现在有一个嵌套表单。提交表单时可以粘贴应用程序的调试日志吗?我也不明白
search\u posts\u path
的用途。看起来它在你的任何表单中都没有被引用…基本上这就是我想要的,我不知道如何实现它。。。如何在第一个表单中添加
text\u字段
,将值发送到控制器中的
其他位置
操作???一个表单和一个提交按钮。这才是我真正想要的@西奥帕普,我只想把这个留在这里作为参考-请阅读,也许它会帮助你澄清一些事情:嗯-我想现在的问题已经完全偏离了你原来的问题:)
<%= form_tag search_items_path, :method => "get" do %>
<%= form_tag search_other_items_path, :method => "get" do %>