2011-02-24 24 views
10

RoR'da form_for yardımcı programını kullanarak bir form oluşturmaya çalışıyorum ama bir yönlendirme hatası gibi görünen bir şeyle karşılaşıyorum. İşte alakalı dosyalar şunlardır:undefined method "_index_path" form_for problem

modelleri/equipment.rb

class Equipment < ActiveRecord::Base 
    attr_accessible :name, :tracking_number 
    validates :tracking_number, :presence => true, 
           :uniqueness => { :case_sensitive => true } 
end 

kontrolörleri/equipments_controllers.rb

class EquipmentsController < ApplicationController 
    def index 
    @equipments = Equipment.paginate(:page => params[:page]) 
    end 

    def new 
    @equipment = Equipment.new 
    end 

end 

görüntüleme/ekipmanları/new.html.rb

<h1>Add an equipment</h1> 
<%= form_for (@equipment) do |f| %> 
    <%= render 'shared/error_messages', :object => f.object %> 
    <div class="field"> 
    <%= f.label :name %> <br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :tracking_number %><br /> 
    <%= f.text_field :tracking_number %> 
    </div> 
    <%= f.submit "Add" %> 
<% end %> 

routes.rb

EquipmentTracking::Application.routes.draw do 
    root :to => "equipments#index" 
    resources :equipments 
end 

Ben yanlış bir şey görüyor ancak çıkış aşağıdaki yoktur:

NoMethodError in Equipments#new 
Showing /opt/ror/equipment_tracking/app/views/equipments/new.html.erb where line #2 raised: 
undefined method `equipment_index_path' for #<#<Class:0xb6725a2c>:0xb6724640> 

Ben o iş gibi görünüyor

<%= form_for (:equipment) do |f| %> 

bunu değiştirdiyseniz tamam. Ayrıca statik değişken @equipment

<%= @equipment %> 

getiri

#<Equipment:0xb685ece0> 

Burada bir kayıp am geçti oluyor emin değilim. Ben sadece railstutorial.org kitabını takip ederken yaptığım şeyi yaptım ve kitabı bitirebildim.

+0

Bu dosyalarda daha fazla içerik var mı? equipment_index_path oldukça tuhaftır ve Rails tarafından üretilen bir yönlendirme yolu olmamalıdır. – bensie

cevap

18

Sorununuzun "ekipman" kelimesini kullanımında yattığını düşünüyorum. Rails konsolunu çalıştırırsanız, 'equipment'.pluralize çalıştırın, "ekipmanın" çoğunun "ekipman" olduğunu göreceksiniz.

Bu nedenle, projeniz boyunca bir arama yapar ve "ekipman" ile herhangi bir "ekipman" örneğini değiştirirdim ve bunu düzelteceğine bahse girerim.

+0

Teşekkürler! Bu yaptı. Denetleyicileri yapmadan önce çoğulları rayları kontrol etmeyi aklımda tutmalıyım. – Rystraum

+0

Ayrıca kelime bilgimi ve toplu isimlerimi kontrol etmek daha iyi olur. – Rystraum

İlgili konular