Ruby on rails 用于筛选器查询的表单_指向创建操作
下午好, 我正试图在rails应用程序中设置一个过滤器,但当我处理以下内容时,它会重定向到提交时的创建操作,我无法理解为什么它会传递到此操作: jobs_controller.rbRuby 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 @
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 %>