用于#&lt;#<class:0x00000003b7a860>的未定义方法`students_path':0x00000003b6d6d8&gt;你的意思是? student_path

时间:2016-08-08 18:46:28

标签: ruby-on-rails

我暂时收到此错误 我的student_controller.rb文件:

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 / 我的ruby版本是2.3.0p0,我的rails版本是5.0.0 请任何帮助 和我的routes.rb文件:

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

2 个答案:

答案 0 :(得分:2)

尝试在students_controller.rb中重命名您的控制器。注意学生是复数。

还从以下位置重命名班级名称:

class StudentController < ApplicationController

为:

class StudentsController < ApplicationController

修改

您可以按照以下方式编写创建操作:

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

答案 1 :(得分:0)

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

将提交StudentsController#create行动。表格行动将是&#34; /学生&#34;并且相应的命名路线将是students_path,但您已为学生定义了单一路线

所以要么

StudentController重命名为StudentsController,并将资源路由复数为resources :students

运行$ rake routes,找到学生创建路径&amp;通过提供url参数覆盖自动表单操作生成 例如

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