Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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有没有其他方法来实现这个循环?干的_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails有没有其他方法来实现这个循环?干的

Ruby on rails Rails有没有其他方法来实现这个循环?干的,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,Rails以保持物品干燥而闻名 我将创建一个如下表: 有没有其他重复循环的方法 <tbody> <tr> <th class="column1" scope="row">Data usage</th> <%= @something.each do |info| %> <td><%= info.name %></td> <% end %> &

Rails以保持物品干燥而闻名

我将创建一个如下表:

有没有其他重复循环的方法

<tbody>
    <tr>
        <th class="column1" scope="row">Data usage</th>

<%= @something.each do |info| %>
        <td><%= info.name %></td>
<% end %>
    </tr>   
     <tr class="odd">
        <th class="column1" scope="row">Opslag Capaciteit</th>

<%= @something.each do |info| %>
<td><%= info.price %></td>
<% end %>
    </tr>   
    </tbody>

使用HAML会使其干燥很多:

%tbody
  %tr
    %th.column1{:scope=>"row"} Data usage
    -@something.each do |info|
      %td= info.name
  %tr.odd
    %th.column1{:scope=>"row"} Opslag Capaciteit
    -@something.each do |info|
      %td= info.price
很抱歉,如果下面的代码不起作用。它很复杂,我还没有测试过

如果您真的想让它更简单,那么您可以在ApplicationHelper或此视图中可用的任何其他helper模块中放置一个helper函数,如下所示:

def my_row(name, &block)
  @row_count ||= -1
  @row_count += 1
  row_contents = content_tag(:th, name, :class=>'column1', :scope=>'row')
  @something.each do |item|
    row_contents += content_tag(:td, capture(item, &block))
  end
  content_tag(:tr, row_contents, :class => @row_count.even? ? 'even' : 'odd')
end
那么在你看来,只要做:

%tbody
  =my_row "Data Usage" do |item|
    =item.name
  =my_row "Opslag Capaciteit" do |item|
    =item.price
或在雇员再培训局,我认为是:

<tbody>
  <%= my_row "Data Usage" do |item| %> <%= item.name %> <% end %>
  <%= my_row "Opslag Capaciteit" do |item| %> <%= item.price %> <% end %>
</tbody>

使用HAML会使其干燥很多:

%tbody
  %tr
    %th.column1{:scope=>"row"} Data usage
    -@something.each do |info|
      %td= info.name
  %tr.odd
    %th.column1{:scope=>"row"} Opslag Capaciteit
    -@something.each do |info|
      %td= info.price
很抱歉,如果下面的代码不起作用。它很复杂,我还没有测试过

如果您真的想让它更简单,那么您可以在ApplicationHelper或此视图中可用的任何其他helper模块中放置一个helper函数,如下所示:

def my_row(name, &block)
  @row_count ||= -1
  @row_count += 1
  row_contents = content_tag(:th, name, :class=>'column1', :scope=>'row')
  @something.each do |item|
    row_contents += content_tag(:td, capture(item, &block))
  end
  content_tag(:tr, row_contents, :class => @row_count.even? ? 'even' : 'odd')
end
那么在你看来,只要做:

%tbody
  =my_row "Data Usage" do |item|
    =item.name
  =my_row "Opslag Capaciteit" do |item|
    =item.price
或在雇员再培训局,我认为是:

<tbody>
  <%= my_row "Data Usage" do |item| %> <%= item.name %> <% end %>
  <%= my_row "Opslag Capaciteit" do |item| %> <%= item.price %> <% end %>
</tbody>

抽象功能正是ruby的block/yield结构的目的

在助手中:

def tds list
  list.map do |item|
    content_tag :td, yield(item)
  end.join("\n")
end
那么在你看来,

<%= tds @something {|i| i.name } %>

<!-- other stuff -->

<%= tds @something {|i| i.price } %>

抽象功能正是ruby的block/yield结构的目的

在助手中:

def tds list
  list.map do |item|
    content_tag :td, yield(item)
  end.join("\n")
end
那么在你看来,

<%= tds @something {|i| i.name } %>

<!-- other stuff -->

<%= tds @something {|i| i.price } %>