Как мне сделать эти маршруты + помощники с изобретательной семантикой / синтаксисом?

Я хочу такие маршруты, как:

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.

Thoughs?

1 ответ

Я предполагаю, что вы хотите иметь вложенные маршруты. Это должно приблизить вас к тому, что вы ищете.

в вашем файле rout.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
Другие вопросы по тегам