Визуализация рельсовой ячейки из контроллера с неявной моделью

Я пытаюсь использовать 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 или что-то подобное.

Другие вопросы по тегам