查看不同的选项:
一种是只将静态页面放在public/文件夹中,但我确实希望布局/应用程序的标题保持一致。
我试过了,但我得到了一个错误:
# in routes.rb:
map.connect '*path', :controller => 'content', :action => 'show'
# in content_controller.rb:
def show
render :action => params[:path].join('/')
end
我想要的是一种简单的方法,通过创建一个.rhtml,就可以轻松地将常见问题解答、联系人、tos、隐私和其他非应用程序类型的页面放在一起。这是谁做的?
发布于 2009-11-07 00:46:39
https://github.com/thoughtbot/high_voltage有一个用于显示静态内容的名为high_voltage的插件
发布于 2009-07-19 11:09:26
取决于url结构,如果您希望路径来自/(例如/about_us),则:
map.connect ':action', :controller => "static"
这应该放在你的路由文件的最后,把你的.html.erb文件放到app/views/static中,你就完成了。
例如:加上about_us.html.erb
,你会在/about_us上看到一个页面。
您问题中的项目非常适合用于分析params[:path]
上提供给您的数组的全部捕获路径。有关更多信息,请访问http://railscasts.com/episodes/46-catch-all-route
发布于 2020-01-25 04:07:03
我从给出的答案中使用了通用控制器的概念,但我想捕获404,所以我在其中放了一个动作来处理这两种情况:
# app/controllers/static_controller.rb
class StaticController < ApplicationController
def static_or_404
render params[:static]
rescue ActionView::MissingTemplate
render :not_found
end
end
然后在我的路由的最底层:
# config/routes.rb
get '*static', to: 'static#static_or_404'
它提供与路径同名的来自app/views/static
的视图,如果没有这样的视图,它就提供app/views/static/not_found.html.erb
。人们也可以用redirect_to root_path
或任何其他希望发生的事情来取代render :not_found
。
https://stackoverflow.com/questions/1146624
复制相似问题