Ruby on rails 在HAML中将ruby块传递给partial
我已经做了一个部分,用于生成我的页面的一些布局,并且在部分中有一个空间,我需要在其中插入一个描述 描述是来自partial调用方的静态文本,非常长。所以我想把它写成一段文字 这就是我所拥有的:Ruby on rails 在HAML中将ruby块传递给partial,ruby-on-rails,ruby,block,haml,partial-views,Ruby On Rails,Ruby,Block,Haml,Partial Views,我已经做了一个部分,用于生成我的页面的一些布局,并且在部分中有一个空间,我需要在其中插入一个描述 描述是来自partial调用方的静态文本,非常长。所以我想把它写成一段文字 这就是我所拥有的: = render "feature", title: "Planning", text: <<-BLOCK Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
= render "feature", title: "Planning", text: <<-BLOCK
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
BLOCK
我宁愿使用
yield
并在content\u中为
块提供内容
在你的部分:
%p Other content wrapping the block of text
= yield :text_block
%p Other content wrapping the block of text
那么在你看来,
= content_for :text_block do
The content you need to insert goes here ...
此Rails代码将“block”/herdoc传递给HAML视图中的分部:
- Haml::Template.options[:suppress_eval] = false
:ruby
haml_io.puts render "feature", title: "Planning", text: <<BLOCK
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
BLOCK
-Haml::Template.options[:suppress\u eval]=false
:红宝石
haml_io.puts render“feature”,title:“Planning”,text:谢谢,这可能会起作用,尽管我需要使用不同的文本多次调用分部,并且
的content_似乎是递增的,如果我使用两次,第二次打印其内容时,它将第一个和第二个文本连接在一起。我也尝试过使用flush:true
,但似乎没有什么不同使用content\u for
来处理多个部分是行不通的。相反,您可以尝试将内容作为locals
参数的一部分传递?我已经尝试过了,但为了使其有效,每次都必须为不同的名称提供内容,然后使用test:content\u for:name
不太整洁,但这很有效。@dongiulio我的答案提供了HAML过滤器:ruby
-在视图中呈现多个部分时,您不必更改名称的内容\u…
- Haml::Template.options[:suppress_eval] = false
:ruby
haml_io.puts render "feature", title: "Planning", text: <<BLOCK
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
BLOCK