【问题标题】:Why do I get the error message: NoMethodError in StaticPagesController#index为什么我会收到错误消息:StaticPagesController#index 中的 NoMethodError
【发布时间】:2015-11-15 01:27:39
【问题描述】:

当我在 Rails 程序上运行 ruby​​ 时,收到错误消息:StaticPagesController:Class 的未定义方法 `action'

application_controller.rb

require_relative '../models/pet'

class ApplicationController < Sinatra::Base


  get '/' do
    #home
    erb :index
  end
  get '/questions' do
    erb :questions
  end
post '/results' do 
  @dog=get_results(params)

  erb :results
end
end

这是我的 static_pages_controller.rb

class StaticPagesController < ApplicationController

  def index
     # Renders static_pages/swalton2html.erb by default.
  end

   def questions
    # Renders static_pages/swalton2html.erb by default.
  end

【问题讨论】:

  • 你到底在做什么?为什么你的ApplicationController 继承自Sinatra::Base?为什么要在 ApplicationController Sinatra 样式中声明路由?将两者混合听起来是个荒谬的想法。
  • @max 我是 ruby​​ on rails 的新手。
  • @user2803053 你想使用 Ruby on Rails 还是想使用 Sinatra?它们是两个不同的东西。
  • @Eric Terry 哦,轨道上的红宝石。

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


【解决方案1】:

阅读getting started guide for Ruby on Rails 似乎会让您受益匪浅。

基本上,您的控制器结构、路由和(可能)视图对您不利,而不是对您不利。使用 Rails 生成器来查看应该如何组织事情可能会有所帮助。

【讨论】:

  • 有没有办法修复我已经拥有的代码,而不是重新开始。
  • 是的,也许 - 但也许你应该从一个像样的教程开始 - 如果你完全混合了 Sinatra 和 rails,那么你很可能会遇到真正的混乱。
猜你喜欢
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多