2012-04-05 2 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', и я не знаю, почему он не может получить доступ к переменной репо, она объявлена ​​в верхней части класса?

ответ

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 «grit» в свой Gemfile.