Как мне сделать эти маршруты + помощники с изобретательной семантикой / синтаксисом?
Я хочу такие маршруты, как:
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