2016-08-08 4 views
0

я получаю эту ошибку на некоторое время моего student_controller.rb файл:undefined method `students_path 'для # <# <Класс: 0x00000003b7a860>: 0x00000003b6d6d8> Вы имели в виду? student_path

class StudentController < ApplicationController 

def new 
@student=Student.new 
end 

def create 
    @student=Student.new(params[:student]) 
    if @student.save 
     redirect_to new_student_path 
    end 
end 
end 

и мой new.html.erb файл:

student infos 
<%= form_for Student.new do |f| %> 
firstname:<%= f.text_field :firstname %> <br/> 
lastname:<%= f.text_field :lastname %> <br> 
<%= f.submit %> 
<% end %> 

файл student_controller.rb находится в контроллере папка и файл new.html.erb находятся в/views/student/ моя рубиновая версия 2.3.0p0, а моя версия rails 5.0.0 , пожалуйста, любую помощь и my routes.rb файл:

Rails.application.routes.draw do 
resources :student 
end 
+0

вместо '<% = form_for Student.new do | f | %> 'use' <% = form_for @student do | f | %> ' – titan

+0

попробовал это не сработало –

+0

ShareYour routes.rb file –

ответ

1

попробуйте переименовать контроллер в students_controller.rb. Обратите внимание, что студенты являются множественными.

также переименовать имя класса из:

class StudentController < ApplicationController 

к:

class StudentsController < ApplicationController 

EDIT

Вы можете написать создать действие следующим образом:

def create 
    @student = Student.new(student_params) 

    if @student.save 
    redirect_to new_student_path 
    end 

end 

    private 
    # Never trust parameters from the scary internet, only allow the white list through. 
    def student_params 
    params.require(:student).permit(:firstname, :lastname) 
    end 
+0

устал это не сработало –

+0

Вы перезапустили веб-сервер? – davideghz

+0

Да, я перезапустил его, появилась новая ошибка: не удалось загрузить автозагрузку –

0
<%= form_for Student.new do |f| %> 

отправит StudentsController#create действие. Форма действия будут «/ студенты» и соответствующий названный маршрут будет students_path, но вы определили особые маршруты для студентов

Так как

Переименовать StudentController в StudentsController и выделить ресурсы маршрута множественное число, как resources :students

или

Run $ rake routes, найти студент создать путь & Перекрыть автоматическую генерацию формы действий, давая параметр URL-адрес например

<%= form_for Student.new, url: student_index_path do |f| %>