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... ]