0

如何在 Rails 中将所有.html文件与High Voltage的控制器匹配,以便最后带有的任何 url在我的视图目录中.html打开相应的文件?pages/<page>.html.erb当然,我可以用高压的page_path命名路线来引用它?

4

1 回答 1

0

我认为这是不可能的,或者至少是微不足道的。URL 的“后缀”部分映射到请求的格式,例如 /pages/document.html、/pages/document.json、/pages/document.xml、/pages/document.csv 等。是 Rails 路由的基础,而 .html 是默认格式,因此 /pages/document 默认会返回 HTML。可能可以创建一条路线,例如:

match '*.html' => 'high_voltage/pages#show', as: :static

我还没有测试过。

如果将匹配项放在底部,则即使传入的 url 上有 .html,它也可能会匹配之前的其他内容。相反,如果你把它放在顶部,它可能会匹配所有没有后缀的东西。应该很容易让你测试它。

我的高压路线:

get '/:id' => 'high_voltage/pages#show', as: :static

在我的路线的底部,就在根 url 之前,所以它基本上是全部。只要我的静态 html 文件路径与我的 RESTful 路由不同,它就可以正常工作。

否则,如果这些静态 URL 可以接受重定向(永久),您可以将匹配项放在上游 HTTP 服务器中,如 nginx 或 apache,并将其重定向到已知的高压路径,如 /pages。

于 2012-10-08T14:57:32.740 回答