ruby ignore关于索引的关系

时间:2014-03-01 12:43:42

标签: ruby-on-rails activerecord

我正在编写一个程序来管理我的备件集合,其中Spares has_many Spare_parts。

但是我需要一个与给定的

不同的索引视图
 spare_spare_parts GET    /spares/:spare_id/spare_parts(.:format)

但是独立,比如

spare_parts GET    /spare_parts(.:format) 

这里的模型

class Spare < ActiveRecord::Base
has_many :spare_parts
serialize :modells
attr_accessible :preis, :storey, :sn, :anmerkung, :modells, :part, :avatar

has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/ET/db/images/spare/:style/missing.png"
validates :part, presence: true,
                    length: { minimum: 2 }
validates :storey, presence: true,
                    length: { minimum: 3 }
def self.search(search)
  if search
    find(:all, :conditions => ['part LIKE ? OR modells LIKE ?',  "%#{search}%", "%#{search}%"])
  else
    find(:all)
  end
end

end

class SparePart < ActiveRecord::Base
  belongs_to :spare
  serialize :part
  attr_accessible :part, :storey, :ebay, :spare_id
end

我已经将我的routes.rb改为

ET::Application.routes.draw do

resources :spares do
resources :spare_parts
end

resources :burners do
resources :burner_items
end
resources :modells
get 'spare_parts' => 'spare_parts#indexall' 

root 'spares#index'

和Spareparts_Controller

class SparePartsController < ApplicationController

  def indexall
    @spares = Spare.all
    @spare_parts = @spares.spare_parts.all

  end

嗯,这不起作用,以及

class SparePartsController < ApplicationController

  def indexall
    @spares = Spare.all
    @spare_parts = Spare_part.all

  end

既不起作用,又给我一个错误

Circular dependency detected while autoloading constant Spare_part

那么如何将所有Spare_parts转到我的Indexall-view?

<h1>Ersatzteile</h1>
<table border="1" cellspacing="10" cellpadding="2" bgcolor="#FFFF00">
    <tr>
    <th>ID </th>
    <th>Beschreibung </th>
    <th>Preis </th>
    <th>Ebay </th>
    <th>Lagerort </th>

    <th colspan="1"></th>
   </tr>
   <tr>
    <% @spares.each do |s| -%>
    <% @spare_parts.each do |p| -%> 
   <tr>
    <td><%= p.id%></td>
    <td><%= p.anmerkung%></td> 
    <td><%= s.preis%></td> 
    <td><%= p.ebay%></td>   
    <td><%= p.storey%></td>

<% end %>  </tr>

</table>

2 个答案:

答案 0 :(得分:0)

只需拨打@spare_parts = SparePart.all中的indexall(而不是Spare_part.all)。

答案 1 :(得分:0)

在routes.rb中,你应该重复以下条目:spare_parts:do ... end block:spares。

resources :spares do
  resources :spare_parts
end
resources :spare_parts

这将创建SparePartsController操作的路径,而不使用备用参数。

 def index
   @spare_parts = SparePart.joins(:spare)
 end

然后你可以离开@spares,并在视图中写:

...
<td><%= p.spare.preis %></td>
...