看着不同的选择:

一种是只是把静态网页中的公共/文件夹,但是我要的头从布局/应用程序是一致的。

我尝试这样做,但我得到了一个错误:

# 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'

呈现一个行动是没有意义的。你会想要呈现的模板(或文件)有一个布局。

# 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内容

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top