Визуализация рельсовой ячейки из контроллера с неявной моделью
Я пытаюсь использовать Rails Cell Gem ( https://github.com/apotonick/cells), но у меня возникают некоторые проблемы при рендеринге ячейки из контроллера и представления.
Это моя клетка (упрощенно):
class AcquiredSkillsCell < Cell::ViewModel
def show
render
end
def has_acquired_skills?
model.count > 0
end
end
и в стандартном представлении ERB я могу изобразить это следующим образом:
<%= cell(:acquired_skills, wh.acquired_skills).show %>
И клетка делает просто отлично.
Но в другом месте кода мне нужно визуализировать эту ячейку из контроллера (в результате вызова AJAX), и я не могу понять API.
Вызов его так же, как и результат, приводит к тому, что он не работает - rails не отображает результат вызова ячейки и вместо этого ищет шаблон на основе имени метода контроллера
Называя это так:
render_cell(:acquired_skills, wh.acquired_skills).show
дает: AbstractController::ActionNotFound (Действие '#' не может быть найдено для AcquiredSkillsCell)
Называя это так:
render_cell(:acquired_skills, :show, @work_history.acquired_skills)
дает: ArgumentError в AcquiredSkillsController# создать неправильное количество аргументов (1 для 0)
Что подразумевает передачу аргумента методу show... Я мог бы определить show с аргументом, но тогда я не получу неявную переменную экземпляра модели.
Есть идеи? Я думаю, что было бы проще, если бы я мог найти документацию по API для render_cell:/
Сэм
1 ответ
Вы должны обновить до Ячеек 4. Вызов в контроллере и представлении идентичны.
html = cell(:comment, @comment).(:show)
Тогда это зависит от вас, как использовать это в контроллере - ячейка ничего не знает о HTTP, поэтому вы должны позвонить render html: html
или что-то подобное.