2012-04-05 191 views
0

我想通過玩玩東西來學習Ruby on Rails,我正在嘗試與Grit一起玩。不過,我有點困惑,來自PHP背景,我從中得到回購的東西。我的代碼Ruby On Rails基本變量

class RepoController < ApplicationController 
    require "grit" 
    repo = Grit::Repo.new("blahblahblah") 

    def index() 
    puts YAML::dump(repo) 
    end 

    def show() 
    repo.commits('master', 10) 
    puts repo.inspect 
    end 
end 

我想轉儲出對象的信息,但我似乎無法訪問回購變量。我的IDE和Ruby一直在說undefined local variable or method repo',我不知道爲什麼它不能訪問repo變量,它是在類的頂部聲明的?

回答

2

你有範圍問題。嘗試:

require 'grit' 

class RepoController < ApplicationController 
    def repo 
    @repo ||= Grit::Repo.new("blahblahblah") 
    end 

    def index() 
    puts YAML::dump(repo) 
    end 

    def show() 
    repo.commits('master', 10) 
    puts repo.inspect 
    end 
end 
1

你的回購變量被定義了範圍認爲這是在你的指數可見,並顯示操作。可能你想要的是這樣的:

class RepoController < ApplicationController 

    before_filter :set_repo 

    def index() 
    puts YAML::dump(@repo) 
    end 

    def show() 
    @repo.commits('master', 10) 
    puts @repo.inspect 
    end 

    def set_repo 
    @repo = Grit::Repo.new("blahblahblah") 
    end 
end 

這將創建一個實例變量,當控制器加載。此外,您將希望從那裏獲取該需求語句,並將Gem「砂礫」放入您的Gemfile中。