0

我被分配了一个任务:有一个静态网页,其中包含手动写入视图的信息。我应该将该信息移动到数据库中,以便我们可以清除视图。我的问题是我不知道如何以页面当前具有的完全相同的格式打印该信息。

我想要做的是编写一个返回这样的信息的方法(原始格式示例):

<strong>Category1</strong>
<ul class="square_list">
<li>Item1</li>
<li>Item2</li>
 #...etc
</ul>

<strong>Category2</strong>
<ul class="square_list">
<li>Item1</li>
<li>Item2</li>
 #...etc
</ul>

#...etc

我能用我自己有限的知识得到的最接近的是:

<% Bus.find(10).amenities.each do | amenity | %>
    <strong><%= amenity.category %></strong>
    <ul class="square_list">
    <li><%= amenity.item %></li>
    </ul>
<% end %>

它会在项目的每个实例上方打印出类别名称。有没有办法让每个块做我想做的事,还是我应该使用另一种方法?

根据要求,型号信息:

class Bus < ActiveRecord::Base
has_many :bus_amenities
has_many :amenities, :through => :bus_amenities

class BusAmenity < ActiveRecord::Base
belongs_to :bus
belongs_to :amenity

class Amenity < ActiveRecord::Base
has_many :bus_amenities
has_many :buses, :through => :bus_amenities

Amenity(category: string, item: string) BusAmenity 只是巴士和便利设施的中间人。

这个应用程序使用 Rails 3.0.19 和 Ruby 1.9.3p327。

如果我没有提供足够的信息,请告诉我。

4

2 回答 2

1

你所拥有的看起来完全可行,除了你amenity有一个单数item. 如果它是一个集合,items那么您的模板可以稍微修改以匹配原始模板:

<% Bus.find(10).amenities.each do | amenity | %>
    <strong><%= amenity.category %></strong>
    <ul class="square_list">
    <% amenity.items.each do |item| %>
      <li><%= item %></li>
    <% end %>
    </ul>   
<% end %>
于 2013-06-26T19:56:52.860 回答
0

我找到了一个可以满足我要求的解决方案,但它看起来很糟糕。我确信那里有更好的解决方案。

所以这就是我想要的,但是必须为每个类别写一个 each 块似乎太罗嗦了。

<strong>Category1</strong>
 <% Bus.find(10).amenities.find(:all, :conditions => {:category => "category1" }).each do | amenity | %>
  <ul class="square_list">
   <li><%= amenity.item %></li>
  </ul>
 <% end %>

<strong>Category2</strong>
 <% Bus.find(10).amenities.find(:all, :conditions => {:category => "category2" }).each do | amenity | %>  
  <ul class="square_list">
   <li><%= amenity.item %></li>
  </ul>
 <% end %>
于 2013-06-27T14:40:03.950 回答