未定义的方法"_index_path"form_for问题

Rys*_*aum 10 ruby-on-rails

我正在尝试使用RoR中的form_for帮助器生成表单,但我遇到的似乎是路由错误.以下是相关文件:

车型/ equipment.rb

class Equipment < ActiveRecord::Base
  attr_accessible :name, :tracking_number
  validates :tracking_number, :presence => true,
                              :uniqueness => { :case_sensitive => true }
end
Run Code Online (Sandbox Code Playgroud)

控制器/ equipments_controllers.rb

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

  def new
    @equipment  = Equipment.new
  end

end
Run Code Online (Sandbox Code Playgroud)

视图/设备/ 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  %>
Run Code Online (Sandbox Code Playgroud)

的routes.rb

EquipmentTracking::Application.routes.draw do
  root :to => "equipments#index"
  resources :equipments
end
Run Code Online (Sandbox Code Playgroud)

我没有看到任何错误,但他们输出以下内容:

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>
Run Code Online (Sandbox Code Playgroud)

如果我把它改成了

<%= form_for (:equipment) do |f| %>
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常.我也确定静态变量@equipment已经过了

<%= @equipment %>
Run Code Online (Sandbox Code Playgroud)

回报

#<Equipment:0xb685ece0> 
Run Code Online (Sandbox Code Playgroud)

我在这里不知所措.当我关注railstutorial.org书时,我刚刚做了我所做的事情,我完成了本书.

aNo*_*ble 22

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

所以我会搜索你的项目并用"设备"替换任何"设备"的实例,我敢打赌它会修复它.