我是Ruby和Rails的初学者,所以这可能是一个简单的问题。
我应该如何设置一个不需要任何自己的数据库表的简单页面?以我的情况为例,我有一个存储歌曲和艺术家的网站。我只想要一个没有智能的简单帮助页面,只需要静态HTML。我还需要一个BROWSE页面,用户将选择是否浏览艺术家或歌曲。这个页面没有任何数据库表,但它会有一个A-Z的链接列表,提供每个字母的帖子数量,因此它需要为它本身不拥有的表进行数据库交互。
我应该为HELP和BROWSE创建控制器,还是需要模型?使用Rails 2,我应该使用哪个脚本/生成工具,我应该让他们为我做什么?
答案 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 中