как я могу заставить его работать? Это пример URL мне нужно:Вложенные маршруты не работают
/имя/сообщений/2
Мой routes.rb
get "/:name", to: "categories#show" do
resources :posts, only: [:show]
end
как я могу заставить его работать? Это пример URL мне нужно:Вложенные маршруты не работают
/имя/сообщений/2
Мой routes.rb
get "/:name", to: "categories#show" do
resources :posts, only: [:show]
end
приложение/Config/routes.rb
scope path: '/:name' do
resources :posts, only: [:show]
end
resources :posts, except: [:show]
Это будет передавать :name
и :id
Params в вашу posts#show
функцию.
приложение/контроллеры/posts_controller.rb
def show
user = User.where(name: params[:name]).first
@post = Post.where(['id = ? AND user_id = ?', params[:id], user.id])
render @post
end
Примечание: Это может быть больше Rails 4 дружественные с помощью Strong параметров.
Это будет поймать что-нибудь, как /:name
в URL-адресов и маршруте к контроллеру категорий. Добавление :path => ""
означает, что он вырезает идентификатор ресурса из URL-адреса. Итак, вместо того, чтобы иметь/categories/foobar
, вы теперь получаете /foobar
Затем вы просто вставляете маршруты сообщений в родительский маршрут.
resources :categories, :path => "" do
resources :posts, :only => :show
end
Обратите внимание, что этот вид броской весь маршрут является потенциально очень подвержен ошибкам, как он ловит все, в том числе дерьмо вы не ожидаете :)