2010-10-15 149 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

我有同樣的問題,一個簡單的重新啓動修復它。