我在Heroku上有一个应用程序。我为"时事通讯"添加了一个新模型和一个控制器。在开发中,一切正常。然后我运行了这些代码行:
git commit -a -m "added newsletter"
git push origin master
git push heroku master
heroku run rake db:migrate
但是在尝试获取索引页面后,我收到了以下消息:
The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.
我跑了heroku run rails console
,输入:Newsletter.connection
irb(main):001:0> Newsletter.connection
NameError: uninitialized constant Newsletter
from (irb):1
from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/console.rb:110:in `start'
from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/console.rb:9:in `start'
from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:68:in `console'
from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>'
from /app/bin/rails:9:in `require'
from /app/bin/rails:9:in `<main>'
irb(main):002:0>
然后我跑Heroku logs
:
2016-02-14T20:24:36.918613+00:00 heroku[router]: at=info method=GET path="/newsletters" host=evening-basin-18662.herokuapp.com request_id=a7acad04-63e4-468f-9eac-bfec23c72773 fwd="87.245.109.31" dyno=web.1 connect=0ms service=13ms status=404 bytes=1829
2016-02-14T20:24:36.919403+00:00 app[web.1]: Started GET "/newsletters" for 87.245.109.31 at 2016-02-14 20:24:36 +0000
2016-02-14T20:24:36.924135+00:00 app[web.1]:
2016-02-14T20:24:36.924138+00:00 app[web.1]: ActionController::RoutingError (uninitialized constant NewslettersController):
我哪里做错了?提前感谢!
编辑:模型/通讯.rb
class Newsletter < ActiveRecord::Base
end
控制器/newsletters_controller.rb
class NewslettersController < ApplicationController
def index
@newsletters = Newsletter.all
end
def new
@newsletter = Newsletter.new
end
def create
@newsletter = Newsletter.new(newsletter_params)
if @newsletter.save
# @user = User.find(current_user.id)
#ExampleMailer.sample_email(@user).deliver
redirect_to newsletters_path
else
render 'new'
end
end
private
def newsletter_params
params.require(:newsletter).permit(:name)
end
end
config/routes.rb
resources :newsletters
编辑 2:
由张国荣解决。
张国荣问道:"你肯定犯了通讯吗?
然后,我这样做了:
git add .
git commit -m "add newsletter"
git push origin master
git push heroku master
在那之后,它奏效了。
因为它是由于 git 处理中的错误,所以这里对 Michael Cruz 已经指出的内容进行更详细的解释:
有关更多信息,请查看 git 提交文档
git 提交-与
git 提交--都
告诉命令自动暂存已修改的文件 并删除,但您没有告诉 Git 的新文件不是 受影响。
有关更多信息,请查看 git 添加文档
git add
此命令 [git add] 使用在 工作树,为下一次提交准备暂存的内容。它 通常将现有路径的当前内容作为一个整体添加,但 通过一些选项,它也可以用来添加仅包含部分内容的内容 对应用的工作树文件所做的更改,或删除路径 不再存在于工作树中。
我的文件是否被跟踪?
要了解您的文件是否被 git 跟踪,您可以运行 git status myFileName.rb
.如果它返回错误,则尚未对其进行跟踪。
> Frederick Cheung问道:"你肯定犯了newsletter.rb吗?
然后,我这样做了:
git add .
git commit -m "add newsletter"
git push origin master
git push heroku master
在那之后,它奏效了。(奇怪,因为我很确定,我运行了 git commit -a -m "add newsletter"
(