2011-02-24 86 views
10

我想在RoR中使用form_for helper生成表单,但我遇到了似乎是路由错误的东西。以下是相关文件:未定义的方法“_index_path”form_for问题

型号/ equipment.rb

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

控制器/ equipments_controllers.rb

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

    def new 
    @equipment = Equipment.new 
    end 

end 

的意见/设备/ 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 

我看不出有什么错,但他们输出如下:

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> 

如果我把它改成

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

似乎工作好。我也可以肯定,静态变量@equipment是越来越自

<%= @equipment %> 

回报

#<Equipment:0xb685ece0> 

我在这里的损失通过。我只是按照我在做railstutorial.org书的时候做的事情,并且能够完成这本书。

+0

这些文件中是否还有其他内容? equipment_index_path相当独特,不应该是由Rails生成的路由路径。 – bensie 2011-02-24 03:36:57

回答

18

我认为你的问题在于你使用“设备”这个词。如果你打开Rails控制台运行'equipment'.pluralize,你会看到“设备”的复数是“设备”。

因此,我会通过您的项目进行搜索,并用“设备”替换“设备”的任何实例,我敢打赌它会修复它。

+0

谢谢!那样做了。在制作我的控制器之前,我应该记住检查导轨的复数。 – Rystraum 2011-02-24 06:03:41

+0

我会更好地检查我的词汇量和我的集体名词。 – Rystraum 2011-02-24 06:09:36

相关问题