我收到此错误并且无法修复它
(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>
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 %>
感谢先进的答案。
答案 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"
或任何你拥有的东西(: