2011-02-24 18 views
10

Estoy intentando generar un formulario utilizando form_for helper en RoR pero me encuentro con lo que parece ser un error de enrutamiento. Aquí están los archivos pertinentes:método indefinido "_index_path" form_for problem

modelos/equipment.rb

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

controladores/equipments_controllers.rb

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

    def new 
    @equipment = Equipment.new 
    end 

end 

vistas/equipos/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 

No veo nada malo pero la salida el siguiente:

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> 

Si lo cambié a

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

parece que funciona De acuerdo. También estoy seguro de que el @equipment variable estática es cada vez transcurrido desde

<%= @equipment %> 

vuelve

#<Equipment:0xb685ece0> 

Estoy en una pérdida aquí. Acabo de hacer lo que hice mientras estaba siguiendo el libro railstutorial.org y pude terminar el libro.

+0

¿Hay más contenido en esos archivos? equipment_index_path es bastante peculiar y no debe ser una ruta de enrutamiento generada por Rails. – bensie

Respuesta

18

Creo que su problema radica en su uso de la palabra "equipos". Si abre la consola de Rails ejecute 'equipment'.pluralize, verá que el plural de "equipo" es "equipo".

Así que haría una búsqueda a través de su proyecto y reemplazaría cualquier instancia de "equipos" por "equipo" y apostaría a que lo arreglaría.

+0

¡Gracias! Eso lo hizo. Debo tener en cuenta que los rieles se verifiquen antes de hacer mis controladores. – Rystraum

+0

Haría mejor en revisar mi vocabulario y mis sustantivos colectivos también. – Rystraum

Cuestiones relacionadas