【问题标题】:Adding a new page in Ruby on Rails在 Ruby on Rails 中添加新页面
【发布时间】:2014-12-11 05:34:19
【问题描述】:

对于 Ruby on Rails 来说还是个新手,我被困在可能是一项简单的任务上。基本上我正在开发同事的应用程序,需要添加一个额外的页面来向用户展示应用程序的工作方式。我已经编写了 HTML 和样式。我只是不知道如何将它准确地添加到 Rails 并正确配置路由。任何帮助将不胜感激!

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:

    首先确保您的同事尚未创建控制器来处理静态页面。在app/controllers 下查找标题类似于directories_controllerpages_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 4 在运行rails g controller pages 时抱怨match 路由。 get '/about' =&gt; 'pages#about' 工作。
    【解决方案2】:

    静态页面

    如果您的页面是真正静态的(其中没有动态的),您可以将它们放在/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 下创建的任何视图文件都将可用,而无需修改您的路由或控制器。

    【讨论】:

    • 太好了,如果我想让页面从其他现有页面中获取 CSS 样式和规则怎么办,而且如果我还想将它添加到核心导航菜单怎么办。我是否还需要出于任何原因创建布局?为这么多问题道歉!
    • 您不需要创建布局,但您可能想要,它很有用。如果您在布局中链接 CSS 文件,它将自动应用于您的所有页面。
    猜你喜欢
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2016-06-20
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多