提问人:Frank Koehl 提问时间:9/19/2023 最后编辑:Frank Koehl 更新时间:9/21/2023 访问量:100
渲染视图而不是 turbo 流中的部分视图
Render view instead of partial from turbo stream
问:
我有一个 Rails 控制器操作,它与其他操作共享一个通用视图:
def foo
# do foo things
respond_to do |format|
format.html { render :baz }
format.turbo_stream { render :baz }
end
end
我希望从 呈现完整的视图(即不是部分视图)。有没有办法告诉涡轮流“使用此视图”,而不是部分?baz
foo.turbo_stream.erb
否则,我正在考虑将整个视图推入 ,然后对 中的部分 - 即 - 实际上是所有内容 进行单行渲染调用。_baz.html.erb
baz.html.erb
# app/views/[controller]/_baz.html.erb
<!-- full view contents here -->
# app/views/[controller]/baz.html.erb
<%= render :baz %>
...我可以做到,而且确实有效,但只是感觉卡顿和错误。
答:
1赞
Alex
9/20/2023
#1
render
in controllers 默认为渲染模板。 in views 默认为 partial。Partial 是一个带有下划线的模板:render
# from controller
render "baz" # renders "controller/baz"
render template: "controller/baz"
render "_baz" # renders "controller/_baz"
render partial: "baz"
render template: "controller/_baz"
# from view
render "baz" # renders "controller/_baz"
render partial: "baz"
render template: "controller/baz" # renders "controller/baz"
顺便说一句,不能解决这种特殊情况吗?只需用相同的框架包裹所有东西,您就不需要turbo_stream。turbo_frame_tag
渲染实际上属于其他控制器操作的模板可以工作,但它确实会变得有点不稳定,并且在进行更改时可能会有点脆弱。我已经看到和/或和成为一种模式。具体控制器操作的模板。Partial 表示可以从其他模板呈现的可重用位,更重要的是,它有望重用,因为它是 partial。index.html.erb
_index.html.erb
show.html.erb
_show.html.erb
index
_index
评论
1赞
Frank Koehl
9/22/2023
选项中的关键字是我一直在寻找的,谢谢!:template
评论