未初始化的常量MessagesController

时间:2013-12-31 23:37:56

标签: ruby ruby-on-rails-4

我正在构建一个基于this rails cast的简单聊天应用。我跟着很好,但是当我去localhost时,我得到一个错误“未初始化的常量MessagesController :: Message”。这通常是一个简单的修复,但我花了一个多小时寻找修复,我看不到它。这是我的代码;

messages_controller

class MessagesController < ApplicationController

    def index
        @messages = Message.all
    end

    def create
        @message = Message.create!(params[:message])
        PrivatePub.publish_to("/messages/new", "alert('#{@message.content}');")
    end

end

model(message.rb)

class Message
end

指数&amp;消息表单(index.html.erb);

<h1>Hack Chat</h1>

<ul id="chat">
    <%= render @messages %>
</ul>

<%= form_for Message.new, remote: true do |f| %>
    <%= f.text_field :content %>
    <%= f.submit "Send" %>
<% end %>

<%= subscribe_to "/messages/new" %>

routes.rb中;

Hackchat::Application.routes.draw do
    root to: 'messages#index'
    resources :messages
end

的Gemfile;

source 'https://rubygems.org'

gem 'rails', '4.0.0'
gem 'sqlite3'

group :assets do 
    gem 'sass-rails', '~> 4.0.0'
    gem 'uglifier', '>= 1.3.0'
    gem 'coffee-rails', '~> 4.0.0'
end

gem 'jquery-rails'
gem 'private_pub'
gem "thin", "~> 1.6.1"

我已经检查过每一个我能想到的事情,为什么我会得到这个错误,我真的不知道为什么。任何帮助将非常感激。

另外,为了使用私人酒吧,我是否必须运行两个终端窗口,一个运行rails服务器,另一个运行faye?

1 个答案:

答案 0 :(得分:2)

您的模型为@Messages,将其更改为@message

要改变它,就像你应该使用迁移一样:

def change
  rename_table :old_table_name, :new_table_name
end

当然不要手动创建该文件,而是使用rails generator:

rails g migration ChangeMessagesToMessage

这将在'db目录中生成名称中包含正确时间戳的新文件。然后运行:

rake db:migrate

从那以后你的应用应该没问题。