2011-06-29 14 views
36

私は自分のレールアプリのルートルートをコントローラとアクションに設定する方法を知っています。Railsルーティング(root:to => ...)

しかし、どのようにIDを追加するには?

/pages/show/1がルートである必要があります。

どうすれば設定できますか?

答えて

57

は、この同じ問題を抱えていた、これは私の仕事:

​​
+0

これは、そののroot_path(除く良いですが)今、他の場所でアプリ内からリンクされているURLに '1' = 'IDを追加して... – msanteler

+0

@MatthewD - 好奇心は、なぜあなたは、ルートルートを望みます1のIDを指すように? – BKSpurgeon

2

してみてください。Railsのコンソールで

match 'pages/show/:id' => 'pages#show', :as => :root 

rake routes | grep rootは、次のように表示されます。

root  /pages/show/:id(.:format)  {:controller=>"pages", :action=>"show"} 

4

マシューのソリューションは動作しますが、私はオブジェクトを取得するために、より読みやすいと思います。たとえば、「着陸」という名前のページに対してPage#showアクションを実行するとします。これは、もう少し読みやすい:

root :to => "pages#show", :id => Page.find_by_name("landing").id 

パフォーマンスの観点からパフォーマンスが高い優先度でない場合には、追加のデータベースクエリが必要ですが、このソリューションは、より読みやすいので、このソリューションは悪いです。

19

Rails 4.0のとして、あなたは、このようにルートルートを宣言することができます。私は、特定のブログにホームページを指すようにRailsの5.1を使用してい

root 'controller#action' 
+1

しかし、どのように:idをルートに組み込みますか? – dlu

2

。私が持っているのconfig/routes.rbをで...

root 'blogs#show', {id: 1} 

これは/ブログ/ 1

私が構築したブログサイト上でこれをやっているにルートルートを指しています。最初のブログはメインサイトのブログとホームページです。 ?

乾杯

関連する問題