带有参数的网址会导致请求被路由到错误的操作

时间:2011-07-06 04:26:15

标签: ruby-on-rails

所以我的rails路由有一个奇怪的问题,当我转到apps索引路径时它很好,但如果索引路径有任何路由它不起作用。我有一个看起来像这样的控制器:

class ThingsController < ApplicationController
  def index
    @things = Thing.search params[:q]
  end

  def show
    @thing = Thing.find params[:id]
  end
end

在我看来非常通用,搜索方法将:q参数作为输入,这是我的路线:

MyApp::Application.routes.draw do
  root :to => "things#index"
  resources :things
end

有关为何发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以添加将“q”传递给控制器​​的自定义路线:

resources :things
map.connect '/things/:q', :controller => :things, :q => :q
root :to => "things#index"

它将首先匹配顶部,然后如果它不存在则向下移动。然后你可以调用params [:q]没问题。