RoR错误:未定义的方法students_index_path

时间:2011-03-22 04:36:02

标签: ruby-on-rails ruby-on-rails-3

我收到此错误并且无法修复它 (StackOverflow Undefined Method Index Path的帖子没有解决我的问题。) 我得到的确切错误消息是(我正在使用Rails 3.0.5和Ruby 1.9.2):


NoMethodError in Students#new  

Showing C:/rails/ww/app/views/students/_form.html.erb where line #1 raised:

undefined method `students_index_path' for #<#:0x4991c10>


以下是文件:
students_controller.rb


    class StudentsController < ApplicationController

      def new
         @students = Students.new
      end
    end

new.html.erb 的     


<h1>Enroll New Student</h1>

<%= render 'form' %>

<%= link_to 'Back', students_path %>

_form.html.erb


<%= form_for(@students) do |f| %>
  <% if @students .errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@students .errors.count, "error") %> prohibited this course from being saved:</h2>

      <ul>
      <% @students .errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :pen %><br />
    <%= f.text_field :pen %>
  </div>
  <div class="field">
    <%= f.label :fName %><br />
    <%= f.text_field :fName %>
  </div>
  <div class="field">
    <%= f.label :lName %><br />
    <%= f.text_field :lName %>
  </div>
  <div class="field">
    <%= f.label :pass %><br />
    <%= f.text_field :pass %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

感谢先进的答案。

4 个答案:

答案 0 :(得分:2)

应该是<%= form_for(@student) do |f| %>而不是@students

答案 1 :(得分:2)

为什么你的model name is plural ? should be singular.为什么? 只需重命名或删除/创建名称为Student.

的模型

resources :students添加到config / routes.rb

在控制器中,@student = Student.new

多数民众赞成......应该适用于此......

答案 2 :(得分:1)

这是因为您将变量@students传入form_for,因此rails会将其解释为students_index_path。如果你要传入一个名为@student的变量,那你就没问题了。 (假设您创建了一个变量@student = Student.new

我已经读过form_for如何解释它的论据here

答案 3 :(得分:0)

只需在routes.rb

中添加字符串即可
resources :students

而不是

match "/students/:id" => "students#new"

或任何你拥有的东西(: