RESTfulルーティングを維持しながら、次のようなURLを持つワードプレススラッグに似た何かをしようとしています:
http://foo.com/blog/2009/12/04/article-title
私が RESTFUL ルーティングを維持することに関心があるのは、カスタム ルートを使用しているため、多くのプラグインを使用できないためです。
私はすでにRESTfulな外観を次のようにしています:
map.connect '/blog/:year/:mon/:day/:slug',
:controller => 'posts', :action => 'show',
:year => /\d{4}/, :month => /\d{2}/,
:day => /\d{2}/, :slug => /.+/,
:requirements => { :year => /\d{4}/, :month => /\d{2}/, :day => /\d{2}/, :slug => /.+/ }
リンクを作成するには、カスタムの link_to ヘルパーを作成して、適切な URL を生成する必要がありました。私は本当にこれを RESTful にして、link_to post_path( @post ) が上記の URL を生成し、link_to edit_post_path(@post) ...article-title/edit を作成したいと考えています。
私も :has_many => [:comments] を持っていますが、それもうまくいきます。私が試した link_to は次のようになります。
'posts', :action => 'show', :year => recent_post.datetime.year.to_s,
:month => sprintf('%.2d', recent_post.datetime.mon.to_i),
:day => sprintf('%.2d', recent_post.datetime.mday.to_i),
:slug => recent_post.slug %>
これが得られます(これは私が望むものではありません):
http://foo.com/posts/show?day=30&month=11&slug=welcome-to-support-skydivers&year=2009
何が間違っているのかわかりません。これを達成することさえ可能ですか?