2012-01-01 7 views
1

私はindex.html.erbのわずかな変更であるカスタムビューを作成しています。私はlist.html.erbと呼ばれるこのカスタムビューにユーザーを誘導する私のWebアプリケーション上のリンクを作成できるようにしたいと思います。index.html.erbのようなカスタムビューを作成する

1)は、デフォルトの足場インデックスビューをコピーしてindex方法をコピーしてlistに名前を変更することでGalleriesControllerを修正list.html.erb
2)へと改名:ここ

は、私がやったものだ

def list 
@galleries = Gallery.all 

respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @galleries } 
end 
end 

3)Modified routes.rbこのようにファイル:

match "galleries/list" => "galleries#list" 
私は同様の質問を見つけることができませんでしたstackoverflowの上で私の検索では

Couldn't find Gallery with ID=list 
Rails.root: /Users/scervera/Sites/MDN 

Application Trace | Framework Trace | Full Trace 
app/controllers/galleries_controller.rb:28:in `show' 

私は、次のエラーを得続けます。

答えて

5

私はmatchをギャラリーの外側に入れて、その後にギャラリーresourcesを配置していると推測しています。

これは、listがデフォルトのRESTfulマッピングの:idと解釈されていることを意味します。

のオプションが含まれます:あなたは本当に(奇妙なようだ)、それらの両方を必要としない限り、

  1. ちょうどindexを使用します。
  2. listhere(下記参照)のようなRESTfulアクションを追加する。
  3. 経路の順序を変更したり、経路の重複を避けるために制約を使用したりします。 IMOこれは最も壊れやすいもので、最も好ましいものではありません。

listアクション(オプション2)を追加するには:

resources :galleries do 
  get 'list', :on => :collection 
end 
+0

ありがとう、私はルーティングの順序を変更するより脆弱であるため、私はオプション2を試してみると思います。このオプションに関するもう1つの質問:ギャラリーのすべてのアクションを「resources:gallery do」ブロックに表示する必要がありますか? –

+0

@SteveCervera Nope;デフォルトルートはまだそこにあります。 –

+0

心配しないでください。あなたが提供したリンクから、既存のアクションのそれぞれに対してRESTfulアクションを作成する必要はないことがわかります。私の顧客のためだけです。どうも –

1

galleries/listは、他のすべてのギャラリールートの前に配置する必要があります。

ご注文事項。あなたの場合、 "galleries /:id"のルートが最初にマッチして、このエラーが発生します。

ここでは、Railsルーティングに関する詳細な情報を得ることができます:Rails Routing from the Outside In

+0

がそれを固定順序を変更します。ありがとう。 –

関連する問題