2011-07-06 4 views
0

私は自分のレールのルーティングに奇妙な問題があります。アプリのインデックスパスに行くとうまくいきますが、インデックスパスにルートがないと動作しません。なぜこれで任意の考えparamsのURLがリクエストを間違った操作にルーティングする原因となる

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

:私のようなものに見えるコントローラがあります。私の意見ではかなり一般的な

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

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

を、検索方法は、ここで、その入力として:qのparamを取り、私のルートであります起こっている?

+0

リソースと 'root'が同じコントローラを共有する' root'ディレクティブの周りでルートを使ってプレイしようとしたとき、私は非常に似ていることに気付きました。ここで私の質問を参照してください:http://stackoverflow.com/questions/6313905/rails-3-problem-with-routes-constraint私はそれがバグだと誓います。私は実際のソリューションを更新すべきですが、基本的にすべてのパスをハードコーディングしてしまいました。約20があったので、私はそれを取り除くことができると考えました。 – Dex

+0

@Dex、yah manそれはとても奇妙です。私はあなたの方法を今のところこれを回避するために使わなければならないと思います。ありがとう。 –

答えて

1

あなたは、コントローラに沿って「Q」を渡すカスタムルート追加することができます:それは、それが存在しない場合は下に移動し、その後、最初のトップにマッチします

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

を。その後、params [:q]を問題なく呼び出すことができます。

+0

うん、[sighs]これは、これが私がやらなければならなかったことだと思っていた、それはとても奇妙で、ある種のバグでなければならない。ああ、助けてくれてありがとう。 –

+0

問題ありません。幸運の男 –

関連する問題