0

次のようなルートが必要です:

get '/posts/new'           => 'posts#new'
get '/:username/posts/:id' => 'posts#show'
get '/:username/posts'     => 'posts#index'

次のようなヘルパーを介してアクセスできます。

new_post_path    #=> new   -
post_path(post)  #=> show  - :username implied from post
posts_path       #=> index - :username implied from session
posts_path(user) #=> index - :username explicit

各ルートを手動で指定するのではなく、機知に富んだセマンティクスでこれを行いたいと思います。また、URLヘルパーをスマートにする方法もわかりません。

でも?

4

1 に答える 1

0

あなたが望むのは、ネストされたルートを持つことだと思います。これにより、探しているものに近づくはずです。

あなたの routes.rb ファイルで:

resources :users do
  resoures :posts
end

これにより、次のようなパスが作成されます。

/users
/users/:user_id
/users/:user_id/posts
/users/:user_id/posts/:id

次に、そこからルートを微調整して/posts/new、次のような投稿コントローラーを指すようにすることができます。

(テストされておらず、これが 100% 正しいかどうかわからないので、誰か教えてください)

resources :users do
  resoures :posts do
    match "/posts/new", :to => "posts#new"
  end
end
于 2013-04-04T20:22:37.327 に答える