Как вы там определили, он должен быть доступен. Есть ли вероятность, что вы определили что-то еще под названием ConcreteMenu, но в другом контексте?
Чтобы убедиться, что вы звоните правильно, там, где может быть двусмысленность, вы можете обратиться к классу верхнего уровня:
recipe_ids = ::ConcreteMenu.getRecipes(id)
Другой способ проверить правильность определения метода через скрипт / консоль:
ConcreteMenu.methods.grep(/getRecipe/)
# => ["getRecipes"]
Предполагается, конечно, что у вас возникли проблемы с методом getRecipes. Возможно, вы ошибаетесь, когда переменные контроллера передаются в представление:
def show
@id = params[:id]
@recipe_ids = ConcreteMenu.getRecipes(@id)
respond_to do |format|
format.html
end
end
Любые переменные экземпляра, определенные (@ ...), будут доступны в контексте представления, но любые локальные переменные больше не будут определяться, поскольку они находятся вне области действия.