Ruby on rails 用于筛选器查询的表单_指向创建操作

Ruby on rails 用于筛选器查询的表单_指向创建操作,ruby-on-rails,Ruby On Rails,下午好, 我正试图在rails应用程序中设置一个过滤器,但当我处理以下内容时,它会重定向到提交时的创建操作,我无法理解为什么它会传递到此操作: jobs_controller.rb def index @jobs = Job.all @show_sub_nav = true @lang = Job.find_by_sql("SELECT languages FROM jobs GROUP BY languages").map &:languages @

下午好,

我正试图在rails应用程序中设置一个过滤器,但当我处理以下内容时,它会重定向到提交时的创建操作,我无法理解为什么它会传递到此操作:

jobs_controller.rb

  def index
    @jobs = Job.all
    @show_sub_nav = true
    @lang = Job.find_by_sql("SELECT languages FROM jobs GROUP BY languages").map &:languages
    @list = params[:languages].blank? ? Job.all : Job.find_all_by_category(params[:languages])
  end
我的看法

 <%= form_tag(jobs_path :method => 'get', :action => 'index') do %>
       <%= select_tag "languages", options_for_select(@lang) %>
       <%= submit_tag "Filter" %>
<% end %>

它会重定向,因为您正在使用以下命令设置http类型:
:method=>“GET”


通常,形成POST数据,以便您想要
:method=>“POST”
,或者如果您遵循restful路由设计,则不需要指定
:method
,因为rails非常聪明,可以知道。

通过以下方法解决了此问题:

 <%= form_tag({ :action => "index"}, { :method => "get"}) do %>
“index”},{:method=>“get”})do%>

似乎工作正常,给了我正确的输出。

这可能是因为
jobs\u path
是一条获取路径。如果运行
rake routes
,则可以查看所有路由。
 <%= form_tag({ :action => "index"}, { :method => "get"}) do %>