2016-05-13 38 views
-1

块内容我有这段代码的.rb文件中:在段落中如何调用从HTML

main_content_blocks do 
    5.times.map do |position| 
    { 
     id:      rand(10..100), 
     position:    position, 
     block_type:    'text', 
     text_markdown:   "**This is the Markdown number #{position}**", 
     library_image_id:  nil, 
     library_image_alt_text: nil, 
     library_image_title: nil, 
     library_image_caption: nil, 
    } 
    end 
end 

从HTML,比如我需要调用main_content_blocks的不同选项.. 。例如ID,text_markdown等... 如何使用ruby <%>编写HTML?

+0

只要您在控制器中将main_content_blocks定义为实例变量,就可以在您的html模板中运行此块。您可以使用<%=标签在视图中输出您需要的内容。 – bkunzi01

+0

嗨bkunzi01,谢谢你的回答。如我所说,我是新来的红宝石。所有的控制器和曼波詹博已经完成了。我需要HTML位。你能在这里提供热点目标(例如)text_markdown吗?或许?<%= main_content_blocks.text_markdown%>? – Jonathan

+0

哪个.rb文件和哪个函数包含此代码?正如@ bkunzi01所说的,你需要在控制器的相应操作中将此作为一个实例变量 - 就像'@main_content_blocks = main_content_blocks这样做......' - 你真的尝试过输出main_content_blocks ruby​​代码吗?在那里的ruby代码有几个错误,从'未定义的变量main_content_blocks'开始。 – Anand

回答

0

详细阐述bkunzi01的响应 - 在控制器中创建一个变量后,在视图中访问main_content_blocks变量只需将@添加到需要的变量的开头,这将使其成为实例变量。例如,如果你正在打你的ExampleController#索引路线。

controllers/example_controller.rb

class ExampleController < ApplicationController 
    def index 
    @view_data = 
     main_content_blocks do 
     5.times.map do |position| 
      { 
      id:      rand(10..100), 
      position:    position, 
      block_type:    'text', 
      text_markdown:   "**This is the Markdown number #{position}**", 
      library_image_id:  nil, 
      library_image_alt_text: nil, 
      library_image_title: nil, 
      library_image_caption: nil, 
      } 
      end 
     end 
    end 
end 

然后在视图(使用HTML和ERB)

views/example/index.html.erb

<div> 
    <% @view_data.each do |data| %> 
     <h1><%= data[:id] %></h1> 
    <% end %> 
</div> 

会使像下面的一些事情:

<div> 
    <h1>1</h1> 
    <h1>2</h1> 
    <h1>3</h1> 
    <h1>4</h1> 
    <h1>5</h1> 
</div> 
+0

Rails很聪明,知道你的路由何时去到ExampleController#index,需要被渲染的视图位于views/example/index .html'没有你需要明确告诉它。控制器方法中设置的任何实例变量都可以在其相应的视图中使用erb语法:<%@something%>不会显示某些内容,但会对其进行评估。 <%= @something%>将显示变量的值 –