В Cells-3.7.0 не работает наследование ячеек, рельсы 3.1.1 - PullRequest
1 голос
/ 09 ноября 2011

У меня проблема с использованием наследования в ячейках 3.7.0 гем с рельсами 3.1.1. Похоже, ошибка, но я не уверен. У меня есть боковая панель с кучей кнопок, которые отображаются или нет в зависимости от различных параметров. Я пытаюсь использовать ячейки, чтобы убрать некоторую логику из представлений. Работает нормально, кроме наследования. У меня есть ячейка для каждой кнопки, например:

class AddCompanyCell < Cell::Rails
  def display
    render
  end
end

class CompanyJobsCell < Cell::Rails
  def display(args)
    @company = args[:company]
    render
  end
end

Спецификации для этих ячеек выглядят так:

describe AddCompanyCell do
  context "cell rendering" do 

    context "rendering display" do
      subject { render_cell(:add_company, :display) }

      it { should have_link("Add Company", href: "/companies/new") }
    end
  end

  context "cell instance" do 
    subject { cell(:add_company) } 

    it { should respond_to(:display) }
  end
end

Все спецификации проходят.

Очевидно, у меня много классов, подобных тем, что указаны выше. У них есть только один метод display, но с переменным числом параметров. Итак, я попытался реализовать родительский класс для всех этих:

class GeneralCell < Cell::Rails
  def display(args)
    args.each do |k,v|
      eval("@#{k} = v")
    end
    render
  end
end

Все спецификации проходят для GeneralCell. Но когда я пытаюсь применить наследование, например:

class AddCompanyCell < GeneralCell
end

Я получаю ошибку при вызове render_cell:

Failure/Error: subject { render_cell(:add_company, :display, opts: {}) }
AbstractController::ActionNotFound:
The action 'display' could not be found for AddCompanyCell

Обратите внимание, что второй тест для AddCompanyCell (should respond_to(:display)) прошел. Weird. Есть идеи?

...