我有几个静态文件(页面),它们基本上是我网站页面源代码的副本,内容已经更改。
这些文件以各种方式支持我的网站(保持相同的格式)。
例如菜单部分是: -
<body>
<div id="menu">
<ul class="level1" id="root">
etc
etc. until
</ul>
</div>
不幸的是,每个月左右我的菜单栏都会更改,我必须手动更新每个静态文件。 因为我的每个静态文件都有相同的菜单。
是否可以有一个可以更新的菜单文件,并让静态文件自动加载它们。
我计划再增加几个静态文件。如果有人能建议如何做到这一点,这将是一个很大的帮助。
答案 0 :(得分:0)
哦,是的。使用一些javascript魔法加载页面加载菜单栏并将其保存在menu.html中。
答案 1 :(得分:0)
一种解决方案可能是使用spider(wget --recursive)直接从您的应用程序下载生成的页面。一个命令,您拥有站点的完整副本。 (只需添加一些有用的选项,例如--convert-links)。
另一个选项可能是在控制器中编写after_filter,并将生成的内容写入文件(并非总是如此,但是例如在添加参数时?refresh_copy = 1)。也许只是打开页面缓存是合适的?但问题是你将无法轻易触发控制器动作。
如果您不想复制整个站点,只需添加一些特定的路由或控制器(/ mirrorable / ...)并在其上运行spider,或者只是手动访问它们(以触发保存文件中的内容) )。
答案 2 :(得分:0)
我最终创建了一个没有模型的控制器。
rails g controller staticpages
然后我创建了一个布局文件,通过与“视图文件中的”content_for“相关联的”yield“将个别更改导入到布局中(静态文件视图中的静态文件(页面)”(例如缩写) ,关于此网站等)。
静态文件的其余部分在布局中加载了通常的“yield”。工作一种享受。不再更新菜单栏全部自动完成。
要获取正确的静态文件,我使用以下方法创建了一条路线: -
match 'static/:static_page_name'=> 'staticpages#show' (or in rails 2.x:-
map.connect 'static/:static_page_name', :controller=> "staticpages", :action=> "show"
“static_page_name”变量接受了url中“/ static /”之后的任何内容,并将其传递给控制器“staticpages”,其中我设置了一个show动作,其中包含: -
def show
@static_page_name = params[:static_page_name]
allowed_pages = %w(abbreviations aboutthissite etc, etc,)
if allowed_pages.include?(@static_page_name)
render @static_page_name
else
redirect_to '/' #redirects to homepage if link does not exists
end
端
然后我只需要更改网站中的链接。 (例如&lt;%= link_to“关于本网站”,'/ static / aboutthissite'%&gt;)
和中提琴!一切正常。