我正在关注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。
错误讯息:
答案 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
这对我有用。