我在。 7个Rails by Example书,我在其中创建了一个基本的"注册"形成。当我在本地主机上提交表单时,通过指示我
来正常工作LOCALHOST / new(返回注册页面,注册信息错误)或LOCALHOST / show(用户个人资料,成功)。
当我将同一个应用程序推送到heroku并点击提交按钮时,它总是引导我到这个网址:
appname.heroku.com/form_action.asp?fname=&email=&password=&password=告诉我 "您要查找的页面不存在。您可能输错了地址或页面可能已移动。"
而不是appname.heroku.com/new或/ show。
我很困惑,我是一名初学程序员,我很难理解为什么在本地主机上工作如此完美,但在生产服务器上却没有。请帮忙!
我的代码在github上: https://github.com/Chamza/Sample-App2
答案 0 :(得分:0)
你在Heroku上运行'雪松'堆栈吗?我认为网址应该是appname.herokuapp.com
- 而不是appname.heroku.com
。由于你在github中的代码是基于rails 3.2.1的,你应该使用雪松堆栈。
以下是来自heroku的雪松堆栈的一些信息:https://devcenter.heroku.com/articles/cedar
此外,您可以运行heroku logs --tail --app my-app-name
然后发布点击链接时会发生什么吗?这被称为“拖尾日志”,它将为您提供正在发生的事情的实时输出。
EDIT ***
我查看了您的代码,我发现至少有一个问题是您正在使用的表单:
<% provide(:title, 'Sign up') %>
<div style = "width: 200px; margin: 0 auto;">
<form action="form_action.asp" method="get">
<h1>Sign up</h1>
<p align="left">Name:</p>
<input type="text" name="fname" />
<p>Email:</p>
<input type="text" name="email" />
<p>Password:</p>
<input type="password" name="password" />
<p>Password Confirmation:</p>
<input type="password" name="password" />
<br/>
<input type="submit" value="Submit" />
</div>
</form>
表单中有一些错误。首先,行动是form_action.asp
。看起来它来自一个旧项目。其次,结束</div>
和</form>
标记已切换 - 表单标记应位于div标记之前。
<% provide(:title, 'Sign up') %>
<div style = "width: 200px; margin: 0 auto;">
<form action="form_action.asp" method="get">
<h1>Sign up</h1>
<p align="left">Name:</p>
<input type="text" name="fname" />
<p>Email:</p>
<input type="text" name="email" />
<p>Password:</p>
<input type="password" name="password" />
<p>Password Confirmation:</p>
<input type="password" name="password" />
<br/>
<input type="submit" value="Submit" />
</div>
</form>
本地计算机上的代码可能与您在Heroku上部署的代码不同。我仔细检查 - 做一个heroku releases --app my-app
它会告诉你服务器上最新的git提交是什么。