宝石文件:
source 'https://rubygems.org'
ruby "2.3.1"
gem 'rails', '4.2.3'
gem 'bootstrap-sass', '~> 3.3.6'
gem 'font-awesome-rails', '4.3.0.0'
gem 'sass-rails', '~> 5.0.4'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
group :doc do
gem 'sdoc', require: false
end
group :development, :test do
gem 'byebug', platform: :mri
gem 'sqlite3'
end
group :development do
gem 'web-console'
gem 'listen', '~> 3.0.5'
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
group :production do
gem 'unicorn'
gem 'pg'
gem 'rails_12factor'
end
gem 'simple_form', '~> 3.2', '>= 3.2.1'
gem 'haml', '~> 4.0', '>= 4.0.7'
控制器:( rails g控制器学院/学生)
class Academy::StudentController < ApplicationController
before_action :find_course, only: [:show, :edit, :update, :destroy]
def index
@academy_students = Academy::Student.all.order("created_at DESC")
# render json: Academy::Student.all
end
def new
@academy_student = Academy::Student.new
end
def show
# list = Academy::Student.find(params[:id])
# render json: list
end
def create
if @academy_student = Academy::Student.create(academy_student_params)
redirect_to @academy_student
else
render :new
end
end
def edit
end
def update
if @academy_student.update(academy_student_params)
redirect_to @academy_student
else
render :edit
end
end
def destroy
@academy_student.destroy
redirect_to @academy_student
end
private
def find_course
@academy_student = Academy::Student.find(params[:id])
end
def academy_student_params
params.require(:academy_student).permit(:student_code, :student_name, :student_gender, :student_email, :student_phone, :student_address, :student_degree, :student_grade)
end
end
路线:
namespace :academy do
resources :student
end
academy_student_index GET /academy/student(.:format) academy/student#index
POST /academy/student(.:format) academy/student#create
new_academy_student GET /academy/student/new(.:format) academy/student#new
edit_academy_student GET /academy/student/:id/edit(.:format) academy/student#edit
academy_student GET /academy/student/:id(.:format) academy/student#show
PATCH /academy/student/:id(.:format) academy/student#update
PUT /academy/student/:id(.:format) academy/student#update
DELETE /academy/student/:id(.:format) academy/student#destroy
_form.html.haml
= simple_form_for(@academy_student, html: { class: 'form-horizontal'}) do |f|
= f.error_notification
.form-inputs
= f.input :student_code, label: 'Student Code:'
= f.input :student_name, label: 'Student Name:'
= f.input :student_gender, label: 'Student Gender:'
= f.input :student_email, label: 'Student Email:'
= f.input :student_phone, label: 'Student Phone:'
= f.input :student_address, label: 'Student Address:'
= f.input :student_degree, label: 'Student Degree:'
= f.input :student_grade, label: 'Student Grade:'
= f.button :submit
错误:
Academy :: Student#new中的NoMethodError(当我尝试运行时:http://localhost:3000/academy/student/new)
未定义的方法`academy_students_path&#39;对于#&lt;#:0x007fd586ab8278&gt;你的意思是? academy_student_path academy_student_index_path academy_student_url academy_courses_path
注意:
此控制器&amp;模型生成没有脚手架(当我使用脚手架,其工作)
正在使用更新。
答案 0 :(得分:0)
根据命名约定,控制器名称应为复数。
在您的情况下,students_controller
将student_controller.rb
重命名为students_controller.rb
,将您的控制器类名称更改为
class Academy::StudentsController < ApplicationController
# ...
end
另外,在路线中进行更改
<强>的routes.rb 强>
resources :students
会给你
academy_students GET /academy/students(.:format) academy/students#index
POST /academy/students(.:format) academy/students#create
new_academy_students GET /academy/students/new(.:format) academy/students#new
edit_academy_students GET /academy/students/:id/edit(.:format) academy/students#edit
academy_students GET /academy/students/:id(.:format) academy/students#show
PATCH /academy/students/:id(.:format) academy/students#update
PUT /academy/students/:id(.:format) academy/students#update
DELETE /academy/students/:id(.:format) academy/students#destroy
答案 1 :(得分:0)
您正在尝试获取academy/student#index
在您给定的路线详细信息中,您应该看到没有academy_students_path
的名称,而academy/student#index
则有academy_student_index_path
。
使用academy_student_index_path
代替academy_students_path