Rails按关联表的类别显示技术

时间:2011-11-08 16:08:17

标签: ruby-on-rails

类别表看起来像这样(省略无关信息):

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `category` varchar(255) 
  `spanish` varchar(255) 

技术表:

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order` int(11) 
  `korean` varchar(255) 
  `spanish` varchar(255)
  `category_id` int(11)
  `belt_id` int(11)

已建立关联:

class Technique < ActiveRecord::Base
    belongs_to :belt
    belongs_to :category
end
class Category < ActiveRecord::Base
   has_many :technique, :order => 'techniques.belt_id, `order`'
end

我想在他们自己的页面中显示技术,但按类别分组,而不是像我现在一样单独分类。还希望能够编辑它们并将技术添加到特定类别。

1 个答案:

答案 0 :(得分:1)

这可以很容易地完成。您可以通过在类别的创建/编辑形式中将类别的值作为隐藏选项传递来实现此目的,基本上您将两种形式组合在一起。在技​​术索引上你也可以这样做,把它与类别索引结合起来列出某个类别下的所有技术。

控制器中的

class TechniqueController < ApplicationController
  def index
    @categories = Category.all
  end
end
视图中的

<% @categories .each do |category| %>
  <!-- some category html -->
  <% category.techniques .each do |technique| %>
    <!-- technique html -->
  <% end %>
<% end %>