如何做到静态的内容在轨?
-
16-09-2019 - |
题
看着不同的选择:
一种是只是把静态网页中的公共/文件夹,但是我要的头从布局/应用程序是一致的。
我尝试这样做,但我得到了一个错误:
# in routes.rb:
map.connect '*path', :controller => 'content', :action => 'show'
# in content_controller.rb:
def show
render :action => params[:path].join('/')
end
所有我想要的是一个简单的方法放在一起的东西喜欢我的常见问题、联系、方法、隐私,和其他非应用程序类型的网页地方易于通过创造一个.页面.谁做了这个?
解决方案
thoughtbot有一个称为high_voltage用于显示静态内容插件: https://github.com/thoughtbot/high_voltage一>
其他提示
有关的 Rails5 和<强> Rails4 强>可以执行以下操作:
把线之下在你的routes.rb的端
get ':action' => 'static#:action'
然后请求到根/欢迎,将呈现的 /app/views/static/welcome.html.erb
不要忘记创建一个“静态”的控制器,即使你没有把任何东西在里面。
对于 Rails3中您必须使用 '匹配',而不是 '获得'
match ':action' => 'static#:action'
依赖于链接结构,如果要的路径脱落/(例如/ about_us)的,则:
map.connect ':action', :controller => "static"
这应该在你的路由文件的最后,要把你的.html.erb文件到应用程序/视图/静态和你做。
e.g:在about_us.html.erb
投掷,会给你一个页面在/ about_us
,你在你的问题的项目有一个美中不足的是伟大的所有路线,你可以分析在params[:path]
给你的阵列。在 http://railscasts.com/episodes/46-catch-对更多的信息所有路由
呈现一个行动是没有意义的。你会想要呈现的模板(或文件)有一个布局。
# Path relative to app/views with controller's layout
render :template => params[:path]
# ... OR
# Absolute path. You need to be explicit about rendering with a layout
render :file => params[:path], :layout => true
你可以服务于各种不同的模板,从一个单一的行动,与页面缓存。
# app/controllers/static_controller.rb
class StaticController < ApplicationController
layout 'static'
caches_page :show
def show
valid = %w(static1 static2 static3)
if valid.include?(params[:path])
render :template => File.join('static', params[:path])
else
render :file => File.join(Rails.root, 'public', '404.html'),
:status => 404
end
end
end
最后,我们将需要确定一个路线。
# config/routes.rb
map.connect 'static/:path', :controller => 'static', :action => 'show'
试图访问这些静态网页。如果路径不包括一个有效的模板,我们会呈现404文件和返回404状态。
http://localhost:3000/static/static1
http://localhost:3000/static/static3
http://localhost:3000/static/static2
如果你看一看在应用程序/public你会发现一个静态的/目录static1.html,static2.html 和static3.html.之后访问该网页的第一次,随后的任何请求都将被完全静态的感谢页面缓存。
考虑如果u有1首页控制器,具有耦合方法等节目,关于我们,隐私:
class HomesController < ApplicationController
def show
end
def privacy
end
def aboutus
end
end
和显示方法映射到根,另一映射到一些命名路由等
map.root :controller => "homes", :action => "show"
map.aboutus "/aboutus", :controller => "homes", :action => "aboutus"
map.privacy "/privacy", :controller => "homes", :action => "privacy"
和可观看的每个
app/views/homes/aboutus.html.erb --> you get http://localhost:3000/aboutus
app/views/homes/show.html.erb --> you get http://localhost:3000 (root)
app/views/homes/privacy.html.erb --> you get http://localhost:3000/privacy
全部利用在应用/视图/布局/ application.html.erb相同的布局
Lindsaar 溶液是我见过的最好的一个。他建立的git时改变修订已逾期的高速缓存静态页面。
<%= cache "site-page-#{@page_name}-#{App.git_revision}" do %>
<%= render :partial => @page_name %>
<% end %>
为您的静态页面一个PagesController(例如接触)和插入
def contact_page
end
在配置/ routes.rb中插入
get 'contact' => 'pages#contact_page'
这将显示从视图/页/ contact_page.html.erb内容