SQLite3 :: SQLException:没有这样的表:messages:SELECT“messages”。* FROM“messages”

时间:2014-01-01 00:38:51

标签: ruby sqlite ruby-on-rails-4

我正在制作一个基于on this railscast的简单聊天应用。我发布了另一个关于此的问题,但我愚蠢地没有添加模型,然后我将其命名为错误。

然而,现在已经修复了。问题是,我甚至不确定我是否需要数据库。我本来打算完成这个,然后将它上传到heroku上以便玩。我不想存储消息,但如果有必要,那么我会。这是我的代码。

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" %>

控制器;

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

模型;

class Message < ActiveRecord::Base
end

路线;

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

的Gemfile;

source 'https://rubygems.org'


gem 'rails', '4.0.0'

gem "rake", "~> 10.1.1"


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"

我运行了bundle exec rake db:create,bundle exec rake db:migrate,我仍然得到错误;

ActionView::Template::Error (SQLite3::SQLException: no such table: messages: SELECT "messages".* FROM "messages"):
    1: <h1>Hack Chat</h1>
    2: 
    3: <ul id="chat">
    4:   <%= render @messages %>
    5: </ul>
    6: 
    7: <%= form_for Message.new, remote: true do |f| %>
  app/views/messages/index.html.erb:4:in `_app_views_messages_index_html_erb__3441634471849115078_70351149151260'

非常感谢任何和所有帮助。

1 个答案:

答案 0 :(得分:1)

@messages = Message.all

告诉Rails应用程序在db中查询消息表中的每条消息。所以,如果你想使用一个 以这种方式使用Rails应用程序,然后是的,您必须拥有某种messages表。您说您不打算存储消息,因此index操作应转到空白聊天屏幕。所以只需摆脱@messages = Message.all。如果你想要一个滚动的聊天消息列表,我想你可以把每一行写成一个数组并让索引页显示出来。只需在聊天会话开始时将该数组设置为空白即可。

相关问题