如何使用资源丰富的语义/语法创建这些路由+帮助程序?

时间:2013-04-04 19:58:05

标签: ruby-on-rails routes url-helper

我想要一条路线:

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

我想用资源丰富的语义来做这件事,而不是手工指定每条路线。此外,我不确定如何使网址助手聪明。

几点思考?

1 个答案:

答案 0 :(得分: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