使用websockets渲染模板

时间:2016-02-29 07:27:17

标签: elixir phoenix-framework

我想知道在通过websockets添加内容时是否有办法呈现凤凰模板?如果我想使用websockets添加一些复杂的html结构作为模板而不在javascript代码中复制此结构,那么该怎么办?

我看到的唯一方法就是在控制器中生成模板html,如下所示:

'NullReferenceException was unhandled : Object reference not set to an object instance'

然后将此生成的内容添加到处理频道响应的javascript文件中的页面。

我还没有尝试过,所以它甚至可能无法工作,但我想知道是否有更合适的方法来做到这一点?如果首先可能的话?

1 个答案:

答案 0 :(得分:3)

对于这样的任务,您基本上有两种选择:

  1. 在服务器端渲染HTML并通过websockets发送,这就是你想要做的事情
  2. 在客户端呈现HTML,因此您只需要通过websockets发送数据
  3. 如果您想使用Phoenix模板,

    MyApp.PostView.render(conn, "comment.html", comment: comment)}是处理此问题的完美方式,这是上述第一种情况。

    不要忘记它会返回{:safe, html}而不仅仅是HTML,因此您可能希望使用render_to_string通过websockets发送它。

    处理此问题的第二种方法具有发送较少数据的优势,但您无法轻松重复使用模板,因此这取决于您的要求和应用程序。