6

自分の Web サイトに Rails 3 のブログを置きたいとします。それが唯一のものになるとします。Rails を使用して実装したいのですが、Rails が生成する URL が気に入りません。次のような URL を希望します。

example.com/2012/05/10/foo

私は(to_paramを使用して)行う方法を知っているようなことはしたくありません:

example.com/entries/2012/05/10/foo

私はまだヘルパーを使いたい

new_entry_path(@entry) # -> example.com/new
entry_path(@entry) # -> example.com/2012/05/10/foo
edit_entry_path(@entry) # -> example.com/2012/05/10/foo/edit
destroy_entry_path(@entry)
form_for(@entry)
link_to(@entry.title, @entry)

等々。次に、コメントを付けて、独自のリソースとしてもアクセスできるようにしたいと思います。

example.com/2012/05/10/foo/comments/5

これらの URL は、通常のヘルパーでも取得できるはずです。

edit_entry_comment_path(@entry, @comment) # -> example.com/2012/05/10/foo/comments/5/edit

またはそのようなもの。

では、コントローラー名なしで URL を取得し、引き続き url ヘルパー メソッドを使用することは可能ですか? to_param を上書きするだけでは、常に URL のコントローラー名の後の部分だけが変更されます。いくつかのサンプルコードを入手することは本当に役に立ちます。

4

1 に答える 1

13

おそらくroutes.rb次のような行があります。

resources :entries

フォームのルートを生成し/entries/2012/05/10/fooます。


:pathデフォルトの name 以外のものを使用できるようにする引数が存在しますentries。例えば:

resources :entries, :path => 'my-cool-path'

フォームのルートを生成し/my-cool-path/2012/05/10/fooます。


しかし、空の文字列を に渡すと、:path探している動作が表示されます。

resources :entries, :path => ''

フォームのルートを生成し/2012/05/10/fooます。

于 2012-06-29T22:44:12.013 に答える