rails 将渲染视图存储在变量中

rails storing rendered view in variable

- upcoming = ""
- past = ""
- @saves.each do |save|
  - if save.con1
    - upcoming += render "save_individual"
  - else if save.con2
    - past += render "save_individual"

  - if params[:show_saved]
    .tab-content
      #upcoming.tab-pane.fade.in.active
        = upcoming
      #past.tab-pane.fade
        = past
  - else
    = render "save_individual"

我正在尝试为两个页面重用现有视图,一个将显示没有选项卡的内容,另一个将显示带有 past/upcoming 选项卡的内容以及相应的过滤内容,我正在尝试的是正确的,我看到普通 html 虽然呈现了输出,但有任何合法的方法可以做到这一点吗?

你试过了吗render_to_string?

你所做的似乎有效,你只需要制作这些字符串 html_safe (you could also use sanitize or raw).

= upcoming.html_safe

= past.html_safe

应该修复它。请注意,这会让您面临恶意用户输入,如果有可能,sanitize 帮助者就是您的朋友。

一个更简单的方法来完成你正在做的事情可能是做这样的事情:

- if params[:show_saved]
  .tab-content
    #upcoming.tab-pane.fade.in.active
      - @saves.select(&:con1).each do |save|
        = render 'save_individual'
    #past.tab-pane.fade
      - @saves.select { |save| save.con2 && !save.con1 }.each do |save|
        = render 'save_individual'
- else
  = render 'save_individual'

我认为这是未经测试的,但显示了总体思路。