2014-02-16 5 views

ответ

1

приложение/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 параметров.

0

Это будет поймать что-нибудь, как /:name в URL-адресов и маршруте к контроллеру категорий. Добавление :path => "" означает, что он вырезает идентификатор ресурса из URL-адреса. Итак, вместо того, чтобы иметь/categories/foobar, вы теперь получаете /foobar Затем вы просто вставляете маршруты сообщений в родительский маршрут.

resources :categories, :path => "" do 
    resources :posts, :only => :show 
end 

Обратите внимание, что этот вид броской весь маршрут является потенциально очень подвержен ошибкам, как он ловит все, в том числе дерьмо вы не ожидаете :)

Смежные вопросы