У меня проблема с использованием наследования в ячейках 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. Есть идеи?