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

山姆·斯蒂克兰

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

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

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

有任何想法吗?我认为如果可以找到render_cell的API文档,这会更容易:/

山姆

阿波托尼克

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章