忽略Rails 3中路径的一部分

斯蒂芬·阿达莫夫(Stefan Adamov)

我希望能够忽略应用程序中的部分路径。例如:example.com/products/toys/big-toy,应通过忽略“玩具”部分(仅是product / big-toy)进行布线。我知道路由中可以使用通配符,但是它会忽略产品路径之后的所有内容。我不确定如何执行此操作并使嵌套资源正常工作。

路线:

resources :products do
  member do
    match :details
  end
  resources :photos
end

product.rb:

def to_param
  "#{category.slug}/#{slug}"
end
米卡夫

解决此问题的一种方法是使用路线约束。

试试这个:

resources :products, constraints: { id: /[^\/]+\/[^\/]+/ } do
    member do
      match :details, via: :get
    end
  resources :photos
end

这将捕获的产品:id与中间斜线什么,所以/products/abc/xyz/details将路线products#detailsparams[:id]相等abc/xyz

然后,您可以在中添加一个before过滤器ProductsController,如下所示:

class ProductsController < ApplicationController
  before_filter :parse_id

  // ...

  def parse_id
    slugs = params[:id].split("/")
    params[:category_id] = slugs[0]
    params[:id] = slugs[1]
  end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

忽略反应路由器中路径的一部分?

Gulp src 忽略递归复制的全局路径的一部分

忽略网址的一部分

Nginx忽略URL的一部分

忽略python元组的一部分

Python的一部分,忽略了参数

从URL请求Rails模型的一部分

通过访问时间对目录中的文件进行排序,而忽略其中的一部分

在javascript中搜索字符串时跳过或忽略字符串的一部分

数数 行中的定界符,而忽略作为数据值一部分的定界符

重写规则,但忽略目录的第一部分?

TFlearn-VocabularyProcessor忽略给定词汇的一部分

如何忽略列值上的字符串的一部分

Xcode:文件“ GameViewController.swift”是模块“ SceneKit”的一部分;忽略导入

Xcode-测试类文件是模块的一部分,忽略导入

文件viewController.swift是模块“ coreData”的一部分,忽略了导入

跳过失败仅忽略比赛的一部分

函数无限循环并忽略其他函数的一部分

使用grep过滤后如何忽略行首和行的一部分

如何让git忽略Atmel Studio的.cproj文件的一部分?

Terraform - 如果变量值等于某个值,则忽略它的一部分

我可以破解 Rails 服务器中 HTML 页面的一部分吗

IF语句的第一部分被忽略

Rails 4-从application.html的一部分中排除页面

将Hitimes Gem作为Rails捆绑包的一部分安装时出错

Rails:Flash对象是否是会话对象的一部分

Rails-如何使用变量作为方法名称的一部分

使用已定义的变量作为R中路径名的一部分

如何使用GAS将Google表单中某些列的值转换为[忽略那些空白值]到电子邮件htmlBody的一部分?