我如何让它发挥作用? 这是我需要的一个示例网址:
/名称/帖/ 2
我的routes.rb
get "/:name", to: "categories#show" do
resources :posts, only: [:show]
end
答案 0 :(得分:1)
应用/配置/ routes.rb中强>
scope path: '/:name' do
resources :posts, only: [:show]
end
resources :posts, except: [:show]
这会将:name
和:id
参数传递到您的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更友好。
答案 1 :(得分:0)
这会在URL中捕获/:name
之类的内容,并将其路由到类别控制器。
添加:path => ""
表示它将从URL中删除资源标识符。
因此,您现在获得categories/foobar
而不是/ /foobar
然后,您只需将后期路线嵌套在父路线中。
resources :categories, :path => "" do
resources :posts, :only => :show
end
请注意,这种包罗万象的路线可能非常容易出错,因为它会抓住所有内容,包括您不期望的废话:)