Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用单行循环在Rails视图中生成HTML类_Ruby On Rails_Erb - Fatal编程技术网

Ruby on rails 使用单行循环在Rails视图中生成HTML类

Ruby on rails 使用单行循环在Rails视图中生成HTML类,ruby-on-rails,erb,Ruby On Rails,Erb,我有一个如下格式的散列: @meals = [ { name: 'Roasted Chicken A La Ratatouille', description: '', tags: ['chicken'], type: ['program'], image_url: '' }, { name: 'Turke

我有一个如下格式的散列:

@meals = [
        {
            name: 'Roasted Chicken A La Ratatouille',
            description: '',
            tags: ['chicken'],
            type: ['program'],
            image_url: ''
        },
        {
            name: 'Turkey Nuggets with Buffalo Cauliflower & Spinach',
            description: '',
            tags: ['turkey'],
            type: ['program', 'veggies'],
            image_url: ''
        }
     ]
我希望能够将膳食
类型
解包为元素的类名:

<% meals.shuffle.each do |meal| %>

  <!-- Line in question --> 
  <div class="item col-3 p-2 a b <%= meal[:type].each {|t| t } %>">
  <!-- End line in question --> 

    <div class="card">
      <img class="card-img-top" src="<%= meal[:image_url] %>">
      <div class="card-body">
        <h5 class="card-title font-medium"><%= meal[:name] %></h5>
      </div>
      <div class="card-footer text-muted justify-content-center row">
        <% meal[:tags].each do |tag| %>
          <span style="margin: 2px;" class="badge bg-info-gradiant pointer"><%= tag %></span>
        <% end -%>
      </div>
    </div>
  </div>
<% end %>

">
但当视图渲染时,它显示为:

<div class="item col-3 p-2 a b ["program"]" style="position: absolute; left: 295px; top: 0px;">
    <div class="card" style="height: 399px;">
        ...
    </div>
</div>

...
其中程序显示在括号内。是否有其他方法来完成此操作,以便将数组中的值作为类名应用?

您可以使用此方法将类数组显式转换为以空格分隔的类名字符串:

<div class="item col-3 p-2 a b <%= meal[:type].join(' ') %>">
请注意,
fine[:type]。每个
都不会做您认为它会做的事情。它为
fine[:type]
数组中的每个元素调用块,期望块执行副作用(例如,记录某些内容或保存某些内容),然后返回未修改的
fine[:type]
array。如果您想获得新的数组,则必须使用:


啊,这样的疏忽。我知道有一种方法,我就是想不起来
> meal[:type].each { |t| t.reverse }
=> ["program", "veggies"] # the block doesn’t affect the return value
> meal[:type].map { |t| t.reverse }
=> ["margorp", "seiggev"] # the block affects each returned element