Ruby on rails简单页面没有数据库模型

时间:2010-08-06 08:07:27

标签: ruby-on-rails

我是Ruby和Rails的初学者,所以这可能是一个简单的问题。

我应该如何设置一个不需要任何自己的数据库表的简单页面?以我的情况为例,我有一个存储歌曲和艺术家的网站。我只想要一个没有智能的简单帮助页面,只需要静态HTML。我还需要一个BROWSE页面,用户将选择是否浏览艺术家或歌曲。这个页面没有任何数据库表,但它会有一个A-Z的链接列表,提供每个字母的帖子数量,因此它需要为它本身不拥有的表进行数据库交互。

我应该为HELP和BROWSE创建控制器,还是需要模型?使用Rails 2,我应该使用哪个脚本/生成工具,我应该让他们为我做什么?

5 个答案:

答案 0 :(得分:5)

我通常创建一个PagesController来显示静态页面,如about,faq或privacy。

您需要做的是使用

生成控制器
script/generate controller pages

然后在config/routes.rb

中添加以下内容
map.resources :pages, :only => :show

在你的PagesController中

def show
  # filter the params[:id] here to allow only certain values like
  if params[:id].match /browse|help/
    render :partial => params[:id]
  else
    render :file => "/path/to/some/404_template", :status => 404
  end
end

然后你只需要在app/views/pages/

中添加部分内容
#in /app/views/pages/_help.html.erb

<p>This is the help section</p>

答案 1 :(得分:2)

我过去曾使用过以下所示的方法。在config/routes.rb中设置命名路线:

map.page ':page', :controller => 'pages', :action => 'show',
         :page => /browse|help/

- 注意:page参数受限于某些值(网址/browse/help)。使用此路线,您可以创建如下链接:

<%= link_to 'Help', pages_path('help') %>

最后创建一个控制器(app/controllers/pages_controller.rb):

class PagesController < ApplicationController
  def show
    render params[:page] # => renders /app/views/pages/<page>.html.erb
  end
end

如果您需要更多灵活性,可以更改控制器中的show方法。例如,您可能希望对不同的页面使用不同的布局。对于该场景,您可以根据传入的:page参数的值来分支逻辑。

答案 2 :(得分:1)

控制器和模型在Rails中几乎没有连接。这只是一个惯例。因此,您可以轻松创建一个控制器,该控制器不会与任何型号连接。

答案 3 :(得分:1)

如果它是纯静态的(如* .html),你可以将它添加到你的公共文件夹中。例如:

公共/的test.html 公共/ hello.html的 公共/ about.html

答案 4 :(得分:1)

不必为每个控制器建立模型。这只是一个容易联系的惯例

让我们考虑您要显示的页面是about_us

routes.rb

中添加控制器 about_us_controller.rb

添加视图 about_us / index.html.rb

如果您希望视图不遵循任何布局,只需说

 render :layout => false
<_>在你的about_us.rb