Rails Rails 中列表渲染 + 新增项一般怎么解决?

willx · 2023年05月12日 · 最后由 willx 回复于 2023年05月12日 · 295 次阅读

例如 RubyChina 的回帖。

  • 假设初次渲染所有楼层用的 <%= render @replies %>
  • 后续当我回贴的时候,需要用 ajax 将我的回贴贴到楼层的最底部 listDom.append(newDom);

可问题在于,我的 HTML 模版是写在 ERB 里的,当我需要使用 DOM 操作去新增的时候,岂不是需要把模板在 JS 里面再写一次?

如果我的列表的每一项 DOM 结构都特别复杂,在 JS 和 ERB 中写同样的一套 HTML 代码会非常不利于后续的维护/迭代工作。

请教一下,有什么更好的解决方案吗?

相同的 html 代码会抽出来作为 html erb partial 来共用的。

u1435638317 回复

partial 这个我知道,你的意思是接口直接渲染好的 HTML partial 吗,然后 JS 就不需要手动拼接 DOM 了。这样好像确实可以,感谢。

rails7 的话 turbo stream 的 append 不需要自己写任何 js

u1435638317 回复

感谢,学到了,就是需要这个😀

需要 登录 后方可回复, 如果你还没有账号请 注册新账号