我对Ruby on Rails还比较陌生,目前遇到一个简单的问题。我的工作是在同事的应用程序中添加一个额外的页面,以向用户展示应用程序的功能。我已经编写了HTML和样式,但是不确定如何将其添加到Rails中并正确配置路由。希望能得到帮助!
我对Ruby on Rails还比较陌生,目前遇到一个简单的问题。我的工作是在同事的应用程序中添加一个额外的页面,以向用户展示应用程序的功能。我已经编写了HTML和样式,但是不确定如何将其添加到Rails中并正确配置路由。希望能得到帮助!
首先要确保您的同事没有创建处理静态页面的控制器。在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
的新文件夹,并将您的静态页面添加到此处(app/views/pages),使用.erb
扩展名。使用.erb
将允许您的新页面使用默认布局。
最后,您需要将此控制器添加到routes.rb
中的(config/routes.rb)
,以告诉Rails在哪里查找/help
页面:
match '/help' => 'pages#help'
如果你的页面完全是静态的(没有任何动态内容),你可以将它们放在/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
下创建的任何视图文件都无需修改路由或控制器即可使用。
rails g controller pages
时,Rails 4 会抱怨match
路由。但是get '/about' => 'pages#about'
是可以工作的。 - dysbulic