[前][次][番号順一覧][スレッド一覧]

rails:3816

From: Tatsuki Sugiura <sugi@n...>
Date: Thu, 20 Sep 2012 19:17:50 +0900
Subject: [rails:3816] Re: Rails3 での routs.rb , url_for で困っています

杉浦です。

ああ、すみません、読み違えてました……。

全部の url_for の出力を変えたいと言うよりは、外から
/controller/1 の URL に飛んできた場合にもちゃんと
ルーティングする、あと可能なら rails2 スタイルの URL
を使いたい、と言うのであってますか?

こういう感じで複数行書くのはどうでしょう?
# 最後の resources それぞれコントローラ毎に書く必要があると思います

match ':controller/:id', :action => 'show', :constraints => {:id => /\d+/}
match ':controller/:id/edit', :action => 'edit', :constraints => {:id => /\d+/}
match ':controller(/:action(/:id))'
resources :controller

>>> In Message "[rails:3813] Re: Rails3 での routs.rb , url_for で困っています"
>>>            <505AE750.9070009@a...>,
>>> dezawa <dezawa@a...>  said;
> 有難うございます
>  match '/:controller/:action(/:id)'
> とか
>  match ':controller(/:action(/:id))'
> とか試してみたのですが、これですと


> >> 通る様になりますが(1)(2)(3) が
> >>   No route matches [GET] "/controller/1"
> >> となります。

> になってしまうのです

> (2012年09月20日 18:24), Tatsuki Sugiura wrote:
> > こんにちは。杉浦と申します。
> > 
> > app scaffold の一番最後にサンプルがありますが、( ) 付きに
> > すると省略可という指定になるはずです。
> > 
> > match '/:controller/:action(/:id)'
> > 
> > はどうですか?
> > 
> > # ちなみに互換用に載っているサンプルは以下の物です
> > # match ':controller(/:action(/:id))(.:format)'
> > 
> >>>> In Message "[rails:3809] Rails3 での routs.rb , url_for で困っています"
> >>>>             <505AAD66.4060907@a...>,
> >>>> dezawa <dezawa@a...>  said;
> >> 出沢 @ Rails3.2への移行勉強中 です
> > 
> >> お世話になっています
> > 
> >> id がパラメータに必要な show, edit などのactionと、
> >> 不要な action の同居がうまく行かなくなりました。
> > 
> >> Rails3.2では
> >> (1) url_for( model )                       =>  /controller/1
> >> (2) url_for(:action => :show , :id => 1 )  =>  /controller/1
> >> (3) url_for(:action => :edit , :id => 1 )  =>  /controller/1/edit
> >> (4) url_for(:action => :other, :id => 1 )  =>  /controller/other/1
> >> (5) url_for(:action => :another,:id =>1 )  =>  /controller/another
> > 
> >> となります。
> >> route.rb を default のままにすると、(4)(5) で
> >>   Couldn't find Controller with id=other
> >> となります。
> > 
> >> match '/:controller/:action' を追加すると (5) が
> >> match '/:controller/:action/:id'を追加すると (4) が
> > 
> >> 通る様になりますが(1)(2)(3) が
> >>   No route matches [GET] "/controller/1"
> >> となります。
> > 
> >> actionpack-3.2.0/CHANGELOG.md に以下のような記述があったので、
> >> (2)(3)も(4)の様なurlなるかと思ったのですが違いました。
> >> <<<<
> >> *   Fixed three bugs with the url_for/redirect_to/link_to handling.
> >> Considering the url http://localhost:81/friends/show/1
> > 
> >>        url_for(:action => "list")
> >>          ...used to give http://localhost:81/friends/list/1
> >>          ......now gives http://localhost:81/friends/list
> >>        url_for(:controller => "friends", :action => "destroy", :id => 5)
> >>          ...used to give http://localhost:81/friends/destroy
> >>          ......now gives http://localhost:81/friends/destroy/5
> > 
> >>    Considering the url http://localhost:81/teachers/show/t
> > 
> >>        url_for(:action => "list", :id => 5)
> >>          ...used to give http://localhost:81/5eachers/list/t
> >>          ......now gives http://localhost:81/teachers/list/5
> >>>>>>
> > 
> > 
> >> さて、
> >> [1]  (2)(3)も(4)の様な URL にするためのおまじないはあるのでしょうか
> >> [2]  (1)〜(5)が皆通る route.rb の書き方はあるでしょうか。
> > 
> >> よろしくお願いします
> >>                       出沢
> > 
> >> ###
> >> show に替えて view、edit に替えて modify などにして逃げる手も考えた
> >> のですが後に響きそうなので保留しています。
> >> ###
> >> これから url_for のソース覗いてみます。
> > 
> > 
> >> --
> >> ML: rails@r...
> >> 使い方: http://QuickML.com/
> > 
> > 


> --
> ML: rails@r...
> 使い方: http://QuickML.com/


-- 
Tatsuki Sugiura   mailto:sugi@n...

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      3809 2012-09-20 07:45 [dezawa@a...         ] Rails3 での routs.rb , url_for で困っています
      3810 2012-09-20 07:55 ┣[netwillnet@g...     ]                                       
      3811 2012-09-20 10:54 ┃┣[dezawa@a...         ]                                     
      3814 2012-09-20 12:01 ┃┗[dezawa@a...         ]                                     
      3812 2012-09-20 11:24 ┣[sugi@n...           ]                                       
      3813 2012-09-20 11:52 ┃┗[dezawa@a...         ]                                     
->    3816 2012-09-20 12:17 ┃ ┗[sugi@n...           ]                                   
      3815 2012-09-20 12:12 ┗[dezawa@a...         ] なぜ show/1, edit/1 でないのか?      
      3817 2012-09-20 12:31  ┗[sugi@n...           ]                                     
      3818 2012-09-20 12:46   ┗[dezawa@a...         ]