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

时间:2015-04-06 08:08:34

标签: ruby-on-rails rails-cells

我尝试使用Rails Cell Gem(https://github.com/apotonick/cells),但我在控制器视图中渲染单元时遇到了一些麻烦。< / p>

这是我的手机(简化):

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不会呈现单元格调用的结果,而是根据控制器的方法名称<查找模板< / p>

这样称呼:

render_cell(:acquired_skills, wh.acquired_skills).show

给出:AbstractController :: ActionNotFound(无法为AcquiredSkillsCell找到#&#39;#&#39;)

这样称呼:

render_cell(:acquired_skills, :show, @work_history.acquired_skills)

给出:AcquiredSkillsController中的ArgumentError#创建错误的参数数量(1表示0)

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

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

萨姆

1 个答案:

答案 0 :(得分:4)

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

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

然后由您决定如何在控制器中使用它 - 该单元格对HTTP没有任何了解,因此您必须调用render html: html或其他内容。