Ошибка RoR: неопределенный метод student_index_path - PullRequest
0 голосов
/ 22 марта 2011

Я получаю эту ошибку и не могу ее исправить
(сообщение в StackOverflow Неопределенный путь индекса метода не устранило мою проблему).
Это точное сообщение об ошибке Iя получаю (я использую Rails 3.0.5 и Ruby 1.9.2):

<code>
NoMethodError in Students#new  </p>

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

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

Вот файлы: student_controller.rb

    class StudentsController < ApplicationController

      def new
         @students = Students.new
      end
    end

new.html.erb


<h1>Enroll New Student</h1></p>

<p><%= render 'form' %></p>

<p><%= 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 ]

2 голосов
/ 22 марта 2011

Почему ваш model name is plural ? Это should be singular.
Просто переименуйте или удалите / создайте модель с именем Student.

Добавить resources :students в config / rout.rb

В контроллере, @student = Student.new

Вот так .. должно работать с этим ...

2 голосов
/ 22 марта 2011

Должно быть <%= form_for(@student) do |f| %>, а не @students

1 голос
/ 22 марта 2011

Это потому, что вы передаете переменную @students в form_for, поэтому rails интерпретирует это как students_index_path. Если вы передадите переменную с именем @student, все будет в порядке. (при условии, что вы создали переменную @student = Student.new)

Я бы прочитал о том, как form_for интерпретирует свои аргументы здесь .

0 голосов
/ 22 марта 2011

Просто добавьте строку вways.rb

resources :students

вместо

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

или что у вас есть (:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...