3

我正在关注 railstutorial.org 教程。虽然我能够在网页上看到 gravatar,但我的 rspec 测试失败了。

这是 user_controller_spec.rb 测试:

describe "GET 'show'" do

  before(:each) do
    @user = Factory(:user)
  end

  it "should be successful" do
    get :show, :id => @user
    response.should be_success
  end

end

这是相关的 show.html.erb 文件:

<table class="profile" summary="Profile information">
  <tr>
    <td class="main">
      <h1>
        <%= gravatar_image_tag(@user.email) %>
        <%= @user.name %>
      </h1>
    </td>
    <td class="sidebar round">
      <strong>Name</strong> <%= @user.name %><br />
      <strong>URL</strong> <%= link_to user_path(@user), @user %>
    </td>
  </tr>
</table>

我收到一条错误消息,指出“未定义的方法'gravatar_image_tag'。我已经通过执行“gem install gravatar_image_tag”安装了相应的gem,将其添加到我的gemfile,并且还执行了“bundle install”。当我执行“gem”时它被列为已安装列表”

我已经尝试调试了几个小时了。任何帮助,将不胜感激。提前致谢。顺便说一句,我正在运行带有 GIT Bash、RubyInstaller-1.9.2-p0 的 32 位 Windows 7。

错误信息:

替代文字

4

6 回答 6

18

按照相同的教程,我遇到了同样的undefined method 'gravatar_image_tag'错误,但与上面接受的解决方案不同(我的 gem 在 Gemfile 中的正确位置,所以这不是问题)。

只需要重新启动服务器(Ctrl C然后rails server),然后一切都修复了。

于 2010-10-29T20:25:34.207 回答
1

gravatar_image_taggem 对 gemfile 中的所有环境都是全局的吗?如果您将它放在一个group :development, :production块中或类似的东西中,它将无法在测试中使用。

而且我还没有尝试过,但是您的台词:

get :show, :id => @user

似乎它需要是:

get :show, :id => @user.id

于 2010-10-15T05:42:02.560 回答
1

我是宝石的作者。您能否在 github 页面http://github.com/mdeering/gravatar_image_tag/issues上打开一个问题,其中包含 Rails 版本和我的 gem 列表。我会看看我是否可以为您解决问题并在此处发布答案。

我有一些 gem 的预发布版本,我可以将它们推送到可能已经解决问题的 gemcutter。

干杯,迈克 D。

于 2010-10-15T18:07:30.270 回答
1

如果您使用 Spork 作为 DRB 服务器,请尝试重新启动它,这对我有帮助!(我也在关注 Hartls PDF)。

于 2012-04-15T11:14:30.743 回答
1

我有同样的问题,简单的重启解决了它。

于 2013-02-17T16:52:21.907 回答
0

自 Michael Hartl 的 PDF 发布以来,gravatar gem 文件已更新。

gem 'gravatar_image_tag'

将其包含在您的 Gemfile 中,然后使用

rails s

这对我有用。

于 2012-01-02T17:57:11.973 回答