【发布时间】:2014-12-11 05:34:19
【问题描述】:
对于 Ruby on Rails 来说还是个新手,我被困在可能是一项简单的任务上。基本上我正在开发同事的应用程序,需要添加一个额外的页面来向用户展示应用程序的工作方式。我已经编写了 HTML 和样式。我只是不知道如何将它准确地添加到 Rails 并正确配置路由。任何帮助将不胜感激!
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3
对于 Ruby on Rails 来说还是个新手,我被困在可能是一项简单的任务上。基本上我正在开发同事的应用程序,需要添加一个额外的页面来向用户展示应用程序的工作方式。我已经编写了 HTML 和样式。我只是不知道如何将它准确地添加到 Rails 并正确配置路由。任何帮助将不胜感激!
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3
首先确保您的同事尚未创建控制器来处理静态页面。在app/controllers 下查找标题类似于directories_controller 或pages_controller 等的控制器。如果他/她有,请按照您的同事已经设置的模式进行操作(此时您可能想向他/她寻求指导) .如果没有这样的静态页面控制器,请遵循以下建议。
您可以创建一个名为 PagesController 的控制器,它定义了与路由匹配的方法。例如,您的附加页面可能称为“帮助”,在这种情况下,您可以像这样定义控制器:
class PagesController < ActionController::Base
def help
# put any code here that you need
# (although for a static view you probably won't have any)
end
end
然后您需要在app/views 下创建一个名为pages 的新文件夹,然后您可以在其中添加带有.erb 扩展名的静态页面(app/views/pages)。使用.erb 将允许您的新页面使用默认布局。
最后,您需要将此控制器添加到 (config/routes.rb) 中的 routes.rb 以告诉 rails 在哪里查找 /help 页面:
match '/help' => 'pages#help'
【讨论】:
rails g controller pages 时抱怨match 路由。 get '/about' => 'pages#about' 工作。
如果您的页面是真正静态的(其中没有动态的),您可以将它们放在/public 目录中,它们将可以直接访问。
../public/help.html 中的文件可通过 http://yourdomain.com/help.html 访问
如果你想使用你的布局但只提供静态内容,你可以为它制作一个控制器、路由和视图,如下所示。
# static_controller.rb
class StaticController < ApplicationController
def show
render params[:page]
end
end
# towards the end of routes.rb
get "/:page" => "static#show"
并在app/views/static 发表您的意见。您也可以只使用普通的 html 或 erb。一个名为help.html.erb 的视图将在http://yourdomain.com/help 上提供
您在app/views/static 下创建的任何视图文件都将可用,而无需修改您的路由或控制器。
【讨论】: