将内容添加到静态文件(页面)

时间:2010-11-26 12:11:08

标签: ruby-on-rails

我有几个静态文件(页面),它们基本上是我网站页面源代码的副本,内容已经更改。

这些文件以各种方式支持我的网站(保持相同的格式)。

例如菜单部分是: -

<body>

<div id="menu">

<ul class="level1" id="root">
etc
etc. until
</ul>
    </div>

不幸的是,每个月左右我的菜单栏都会更改,我必须手动更新每个静态文件。 因为我的每个静态文件都有相同的菜单。

是否可以有一个可以更新的菜单文件,并让静态文件自动加载它们。

我计划再增加几个静态文件。如果有人能建议如何做到这一点,这将是一个很大的帮助。

3 个答案:

答案 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;)

和中提琴!一切正常。