2010-10-15 116 views
3

我遵循railstutorial.org教程。虽然我能够在网页上看到gravatar,但我的rspec测试失败。轨道上的红宝石gravatar_image_tag

这里是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 list”时,已经安装了相应的gem

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

错误消息:

alt text

回答

1

是在gravatar_image_tag全球宝石在你的Gemfile所有环境?如果您在group :development, :production区块或其他类似区块中使用它,则它在测试中不可用。

而且我还没有尝试过,但你行:

get :show, :id => @user

好像它需要:

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

+0

谢谢你!!!这是问题。我在开发组中拥有gravatar_image_tag gem!非常感谢!!! – sizzle 2010-10-16 04:47:18

+3

也得到:显示,:id => @user 并得到:显示,:id => @ user.id是相同的 – Calin 2011-03-26 17:15:54

1

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

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

干杯, 麦克D.

19

遵循相同的教程中,我有同样的undefined method 'gravatar_image_tag'错误,但是从接受一个以上(我的宝石是在Gemfile中的正确位置不同的解决方案,使WASN这个问题)。

只是不得不重新启动服务器(Ctrl C,然后rails server),然后一切都是固定的。

+0

重新启动也适用于我。 – John 2011-09-12 16:06:44

+0

我也是。谢谢@TJ! – 2012-04-29 22:37:01

0

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

gem 'gravatar_image_tag' 

包括在你的Gemfile,然后使用

rails s 

为我工作重新启动服务器的轨道。

1

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

1

我有同样的问题,一个简单的重新启动修复它。