【问题标题】:Need help creating a new page on my ruby-based website需要帮助在我的基于 ruby​​ 的网站上创建新页面
【发布时间】:2019-06-13 01:16:46
【问题描述】:

我不久前发布了这个,但已经尝试了所有方法,但仍然无法在我的网站上创建新页面。

如果我错了,请纠正我,但使用 ruby​​ 创建新路由/页面的 3 个步骤是:

  1. app/controllers/pages_controller 中添加一个空函数/控制器操作:def "page name" end
  2. 添加对应的视图文件:例如:touch app/views/pages/page_name.html.erb
  3. 然后在config/routes.rb中添加get 'page_name', to: 'pages#page_name'

我已尝试使用 2 个单独的名称进行此操作,但均未创建新页面/路由。我是否缺少某种终端命令或其他东西?当我执行rails routes 时,它会显示我创建的其他路径,例如offerings,但不是public_speaking(我还尝试按照3 个步骤创建test 路径,但也没有出现)。

我的代码:

页面控制器

class PagesController < ApplicationController
  # GET request for / which is our home page
  def home 
    @basic_plan = Plan.find(1)
    @pro_plan = Plan.find(2)
  end 
      
  def about
  end 
      
  def offerings
  end 
      
  def public_speaking
  end
end

Routes.rb

然后在routes.rb我尝试使用相同的过程(添加get 'public_speaking',到:pages#public_speaking

Rails.application.routes.draw do
  root to: "pages#home"
  devise_for :users, controllers: { registrations: 'users/registrations' }
  resources :users do 
    resource :profile
  end 
  
  get 'about', to: 'pages#about'
  resources :contacts, only: [:create]
  get 'contact-us', to: 'contacts#new', as: 'new_contact' 
  get 'offerings', to: 'pages#offerings'
  get 'public_speaking', to: 'pages#public_speaking'
end

查看文件

我还在views文件夹中创建了一个同名文件public_speaking.html.erb

我预计会创建一条新路线(因为它适用于 offeringsabout),但它没有奏效,我不知道为什么。我将重复这个过程 5-6 页,所以我想确保我能做到这一点

请让我知道是否有任何其他代码位置可能是这里的问题,我会提供任何代码。

【问题讨论】:

  • 您可以试试rake routes 并检查您的操作public_speakingofferings 的路径以及您的about 是否正常工作?

标签: ruby amazon-web-services ruby-on-rails-5


【解决方案1】:

我认为您的页面应该在 views/pages/public_speaking.html.erb 我将首先使用 rails 工具创建控制器:

➜ rails g controller Pages home about offerings public_speaking
Running via Spring preloader in process 31236
      create  app/controllers/pages_controller.rb
       route  get 'pages/home'
get 'pages/about'
get 'pages/offerings'
get 'pages/public_speaking'
      invoke  erb
      create    app/views/pages
      create    app/views/pages/home.html.erb
      create    app/views/pages/about.html.erb
      create    app/views/pages/offerings.html.erb
      create    app/views/pages/public_speaking.html.erb
      invoke  test_unit
      create    test/controllers/pages_controller_test.rb
      invoke  helper
      create    app/helpers/pages_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/pages.coffee
      invoke    scss
      create      app/assets/stylesheets/pages.scss

它会创建你需要的所有东西,然后转到app/views/pages,你会看到所有生成的 html.erb 模板,然后在模板中编写静态 http 页面:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8"/>
    <title>Public Speaking</title>
  </head>
  <body>
    <h1>This is my page</h1>
    <p>I thinks that this should work!!</p>
  </body>
</html>

然后启动您的 Rails 应用程序

rails 服务器 -p 5000

然后转到http://localhost:5000/pages/public_speaking.html,您将在那里获得静态页面

【讨论】:

  • 非常感谢。我有点困惑。顶行是我在终端中输入的内容,其余部分是在 .rb 文件中还是什么?它们都是要在终端中输入的吗?
  • 第一个代码是一个shell命令和输出,第二个是你需要添加到app/views/pages/public_speaking.html.erb的html代码,如果这有助于考虑检查这个答案
  • 感谢您的澄清。结果如下:
  • 在进程中通过 Spring 预加载器运行 3697 冲突 app/controllers/pages_controller.rb 覆盖 /home/ubuntu/environment/saasapp/app/controllers/pages_controller.rb? (输入“h”寻求帮助) [Ynaqdhm] force app/controllers/pages_controller.rb route get 'pages/public_speaking' route get 'pages/offerings' route get 'pages/about' route get 'pages/home' invoke erb exists app/views/pages 冲突 app/views/pages/home.html.erb 我应该覆盖吗?
  • 我想通了!我所要做的就是将 routes.rb 代码从“get 'public_speaking', to: 'pages#public_speaking'”替换为“get 'home/public_speaking',现在我可以查看并链接到该页面!
猜你喜欢
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
相关资源
最近更新 更多