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'
我认为这是未经测试的,但显示了总体思路。
- 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'
我认为这是未经测试的,但显示了总体思路。