ruby on rails gravatar_image_tag

时间:2010-10-15 05:31:38

标签: ruby-on-rails gravatar

我正在关注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“。当我登录时,它被列为已安装执行“宝石列表”

我一直在尝试调试这几个小时。任何帮助,将不胜感激。提前致谢。顺便说一句,我正在使用GIT Bash,RubyInstaller-1.9.2-p0运行32位Windows 7。

错误讯息:

alt text

6 个答案:

答案 0 :(得分:19)

遵循相同的教程,我有同样的undefined method 'gravatar_image_tag'错误,但是与上面接受的解决方案不同(我的gem在Gemfile中的正确位置,所以这不是问题)。< / p>

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

答案 1 :(得分:1)

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

我还没有尝试过,但你的路线:

get :show, :id => @user

似乎需要:

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

答案 2 :(得分:1)

我是宝石的作者。你能在github页面http://github.com/mdeering/gravatar_image_tag/issues上用rails的版本和我的宝石列表打开一个问题吗?我会看看能否为您解决问题并在此处发回答。

我有一些预发布版本的gem,我可以推送给gemcutter,可能已经解决了这个问题。

干杯, 迈克D.

答案 3 :(得分:1)

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

答案 4 :(得分:1)

我遇到了同样的问题,只需重新启动就可以了。

答案 5 :(得分:0)

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

gem 'gravatar_image_tag'

在Gemfile中包含它,然后使用

重启rails服务器
rails s

这对我有用。