在我一直在开发的一个应用程序中,我遇到了一条类似/books/:slug, :to => 'books#show', slug: /.*?/的路线。我很好奇这部分slug: /.*?/是做什么的?
发布于 2020-03-04 23:16:47
这是一种误入歧途的尝试。
它会创建与以下内容匹配的路由:
/books/1
/books/abcd-absc但不是:
/books/1/2
/books/abcd-absc/2slug: /.*?/是一个完全没有意义的正则表达式约束,因为.*匹配所有内容。
最终结果是一个与传统resources :books生成的GET /books/:id执行完全相同的操作的路由,除了参数现在被命名为:slug (woopty do!) -它如此被误导的主要原因是该路由将与前者冲突。
你真的可以通过id或slug来查找记录,这样做很简单:
@book = Book.where(id: params[:id]).or(Book.where(slug: params[:id])).first!https://stackoverflow.com/questions/60527498
复制相似问题