ruby-on-rails - Ruby on Rails - f.label 上的 Completed 500 内部错误

标签 ruby-on-rails ruby forms ruby-on-rails-3.2 label

编辑

这是 GitHub 上的项目:https://github.com/lionelrudaz/myteam2


我正在使用 Railsapp(Twitter Bootstrap、Devise 和 CanCan)上的模板在 Ruby on Rails 中制作我的第一个应用程序。

我还完成了将我的应用程序发布到 Heroku 的必要步骤。

到目前为止一切顺利,在 Heroku 上的第一次发布没问题,直到我在 MacBook Pro 上重新启动服务器。

现在我总是看到默认的错误页面,其中包含消息“我们很抱歉,但出了点问题。”

在终端中,我得到:

=> Booting Thin
=> Rails 3.2.8 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop


Started GET "/" for 127.0.0.1 at 2012-10-01 19:19:21 +0200
Processing by HomeController#index as HTML
     User Load (0.3ms)  SELECT "users".* FROM "users" 
     Club Load (0.2ms)  SELECT "clubs".* FROM "clubs" ORDER BY "clubs"."id" DESC LIMIT 1
Rendered home/index.html.erb within layouts/application (23.2ms)
Completed 500 Internal Server Error in 190ms

由于我不知道如何禁用错误页面以获取真正的堆栈跟踪,所以我开始逐行删除代码以找出哪一行代码不起作用。实际上,看起来 f.label 指令不再起作用了。我知道他们这样做了,我已经使用我的应用程序很长时间了。

这是我的 home_controller.rb 文件

class HomeController < ApplicationController
  def index
    @users = User.all
    @club = Club.last
  end
end

index.html.erb

<h3>Home</h3>

<%= debug @club %>

<%= form_for @club do |f| %>

  <div class="control-group">
    <%= RUBY_VERSION %>
    <%= Rails.version %>
    <%= f.label :name, :name %>
    <%= f.text_field :name %>
  </div>

 <% end %>

 <% @users.each do |user| %>
    <p>User: <%=link_to user.name, user %></p>
 <% end %>

当我更改时会触发错误

 <%= f.label :name, :name %>

 <%= f.label :name %>

我在 Heroku 上更新了我的应用程序,因此您可以检查调试:http://myteam2.herokuapp.com/

我不知道怎么了,太基础了,我觉得很笨。

在调查时,我注意到 f.label 的第二个参数必须是字符串。不可能使用 t() 方法从 i18n 文件更改电子邮件的文本。

我无法继续申请,感到非常沮丧。我的 Google 研究没有成功。

如果您需要更多信息,请告诉我。

干杯,

最佳答案

Lionel,当您使用开发环境在本地运行项目时,您应该会看到一条错误消息。

我克隆了您的项目,经过一些设置后,我运行 rails s 以使用默认开发环境启动项目。主页加载正常,但单击“登录”转到/users/sign_in 显示以下错误:

错误:

http://www.evernote.com/shard/s157/sh/078d0a12-73b1-4eb7-9430-55b916f19ef7/12c0cbb7b7254e5c02bb7ff0f0c4aa3f

该错误表明 config/locales/users.en.yml 中存在问题,需要哈希,但没有返回。

当前 config/locales/users.en.yml 是一个空白文件。

修复:

您可以删除该文件。如果您从未打算使用它,请执行此操作。

添加内容以便解析文件以哈希的形式返回数据。只需将 en: 添加到 config/locales/users.en.yml 的顶部。如果您计划在将来输入翻译数据,请执行此操作。

其他:

您似乎正在 Heroku 上开发您的应用程序。根据我的经验,这会很困难。在本地开发添加功能和修复错误要容易得多。然后在您的应用程序处于稳定状态后部署到 Heroku。您甚至可以在 Heroku 上设置一个单独的暂存服务器,这样您就可以在部署到生产服务器之前测试您的更改。

使用 heroku gem,您可以运行 heroku logs --tail 来监控应用程序的输出。如果您没有使用它,它可能有助于解决您的问题。

祝你好运!

关于ruby-on-rails - Ruby on Rails - f.label 上的 Completed 500 内部错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678902/

相关文章:

css - 如何在html中有选择地加载css?

ruby - Devise & CanCan——CanCan 2.0 API 的问题

ruby-on-rails - 无法从 GoogleOauth2 对您进行身份验证,因为 "Authenticity error"

ruby-on-rails - Rails 中带后备功能的动态命名空间 Controller

ruby-on-rails - 如何根据 Rails 中的时区发送通知?

javascript - AppleScript 通过 JavaScript 将值设置为 Web 表单输入字段

javascript - 单次输入表单如何避免重复提交?

javascript - 如何在没有表单的情况下提交动态数据?

Rails 中的 MySQL 全文搜索?

c - 如何在 ruby​​ 扩展中用 C 语言表达无穷大