at.*_*at. 5 html layout ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2
使用布局在Rails中提供静态HTML文档的最佳方法是什么?显然我可以将HTML文件保存在public/
目录中,但是后来我无法应用布局,或者我可以吗?否则我可以把以下内容放入config/routes.rb
:
match ':page' => 'static#display', :page => /.+\.html/
Run Code Online (Sandbox Code Playgroud)
做.+\.html
工作,所以它结束.html
?无论如何,假设它确实如此,我想我会有一个控制器:
class StaticController < ApplicationController
layout 'static_files'
def display
render params[:page]
end
end
Run Code Online (Sandbox Code Playgroud)
假设工作正常,Ruby会不必要地尝试将HTML文件解析为ERB文件吗?Rails有更好的机制吗?
本教程对rails中的静态页面有很好的解释.
首先,您可以通过rails生成器生成静态页面:
rails generate controller StaticPages home help --no-test-framework
Run Code Online (Sandbox Code Playgroud)
然后,您可以编辑您config/routes.rb
的内容,如下所示:
SampleApp::Application.routes.draw do
root to: 'static_pages#home'
match '/help', to: 'static_pages#help'
.
.
.
end
Run Code Online (Sandbox Code Playgroud)
最后在您的StaticPages
控制器中创建home
和help
方法.
class StaticPagesController < ApplicationController
def home
end
def help
end
end
Run Code Online (Sandbox Code Playgroud)
更新 - 报价来源:Ruby on Rails指南 - 第2.1节
你听说过Rails提升了"约定优于配置".默认渲染就是一个很好的例子.默认情况下,Rails中的控制器自动呈现具有与有效路由对应的名称的视图.例如,如果您的BooksController类中有此代码:
class BooksController < ApplicationController
#empty controller
end
Run Code Online (Sandbox Code Playgroud)
以及您的路线文件中的以下内容:
resources :books
Run Code Online (Sandbox Code Playgroud)
如果你有一个视图文件app/views/books/index.html.erb
,那么即使没有方法,Rails也会渲染它.这适用于任何映射的路由/等效视图.
您可以使用Thoughtbot 的high_Voltage gem 。它的目的是在 Rails 中包含静态页面,并且您可以使用任何您喜欢的模板语言。在内部,它的工作原理与此处提出的解决方案类似。
您可以按照自述文件中的说明为high_Voltage 提供的每个页面自定义布局文件。
归档时间: |
|
查看次数: |
4629 次 |
最近记录: |