使用隐式模型从控制器渲染 rails 单元格

Rendering a rails cell from a controller with an implicit model

我正在尝试使用 Rails 单元格 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)

给出:AcquiredSkillsController 中的 ArgumentError#create 错误的参数数量(1 代表 0)

这意味着它正在将一个参数传递给 show 方法...我可以用一个参数定义 show,但是我不会得到隐式模型实例变量。

有什么想法吗?如果我能找到 render_cell 的 API 文档,我认为这会更容易:/

山姆

您应该更新到 Cells 4。控制器和视图中的调用是相同的。

html = cell(:comment, @comment).(:show)

然后由您决定如何在控制器中使用它 - 单元对 HTTP 一无所知,因此您必须调用 render html: html 或类似的东西。