ajaxForm을 사용하여 모달 폼을 제출하고 모달 자체로 응답을 표시하려고합니다. 그러나, 나는 잡히지 않는 타입 에러 (...)를 얻고있다. ajaxForm은 함수가 아니다. 기본적으로 수업 생성 양식에 대한 모달 폼을 만들고 제출해야하는데, 내 앱은 API 컨트롤러와 프런트 엔드 컨트롤러로 구성됩니다.uncought TypeError : ajaxForm은 레일 버전 5의 함수가 아니십니까?
api!
param_group :lesson
description 'creates a lesson'
example "
{
'id': 12,
'title': 'MUDRAS',
'active_video_id': 3,
'description': 'Description of the lesson',
'points': null,
'is_public': '1',
'videos': [
{
'video': {
'id': 1,
'video': {
'url': '/uploads/video/video/1/250-authentication-from-scratch.mp4'
},
'title': null,
'storage_type': 'Lesson',
'storage_id': 12
}
},
]
}"
def create
@lesson = Lesson.new(lesson_params)
@lesson.creator = current_user
if @lesson.save
render json: {
success: true,
message: "Lesson created Successfully"
}
else
render json: { success: false, message: "Could not Create : #{@lesson.errors.full_messages.join(', ')}" }
end
end
def new
@lesson = Lesson.new
end
위의 코드는 내 API 컨트롤러입니다. 아래 코드는 제 프런트 엔드 컨트롤러 및 강의 관련 양식입니다.
def create
@lesson = Lesson.new(lesson_params)
if @lesson.save
render json: {
success: true,
message: "Lesson Created Successfully"
}
else
render json: {
success: false,
message: "Lesson Creation Failed"
}
end
end
레슨 색인 페이지에서 "새 레슨"버튼을 표시해야합니다. 수업/index.html.erb은
<% unless current_user.student? %>
<div class="container-fluid">
<div class="col-md-3 col-sm-3 text-left">
<div id="newLesson" class="lesson-category btn-danger" lesson_url="<%= new_lesson_path %>">
<i class="fa fa-plus"></i> ADD LESSON
</div>
</div>
</div>
<div class="hidden" id="newLessonForm">
<% @lesson = Lesson.new ; @lesson.videos = [Video.new] %>
<%= render "lessons/form" %>
</div>
<% end %>
<%= render "shared/primary_modal" %>
<div class="container-fluid">
<div class="col-md-3 col-sm-3 text-left">
<h2 class="main-tab tab-active">LESSONS</h2>
</div>
<div class="col-md-9">
<div class="col-md-12 text-right">
<h2 class="main-tab tab-inactive"><a id="responsesLink" class="blacko" href="#"><%= "MY" if current_user.student? %> RESPONSES</a></h2>
</div>
</div>
<div class="col-md-12"><hr/></div>
<!-- Lessons of this course Go here -->
<div class="col-md-3">
<% @lessons.each do |lesson| %>
<div id="lesson_<%= lesson.id %>" class="pill video-view lesson-load" data-lesson-id="<%= lesson.id %>" data-src="<%= lesson.active_video_url %>"><%= lesson.title %></div>
<% end %>
<!-- <div class="pill pill-inactive">Something</div> -->
</div>
<!-- Lesson Content goes here -->
<div class="col-md-9">
<div class="row">
<div class="col-md-12">
<%= render "shared/video_player" %>
</div>
</div>
<div id="lessonContent">
</div>
</div>
</div>
<script>
$("#newLesson").click(function(){
var lesson_path = $(this).attr("lesson_url");
$.get(
lesson_path,
function(content){
$("#primaryModalContent").html(content);
$("#format").val('js');
$("#primaryModal").modal("show");
}
);
});
</script>
내 교훈 작성 양식은 부분적으로 주어진다.
<div class="col-md-12">
<%= simple_form_for @lesson, html: {class: "newLessonform"} do |f| %>
<%= f.input :title, label: "Lesson Title", required: false %>
<%= f.input :description, required: false, as: :text %>
<%= f.input :points, required: false, as: :integer %>
<%= f.input :is_public, label: 'Check to Make this lesson public', as: :boolean %>
<div class="col-md-12">
<% unless @lesson.new_record? or @lesson.active_video_url.blank? %>
<h4> Currently Linked Video </h4>
<video src="<%= @lesson.active_video_url %>" style="width: 400px;"></video>
<% end %>
<hr/>
</div>
<h4>Add <%= @lesson.videos.blank? ? "a" : "another" %> Video</h4>
<% @lesson.videos = [Video.new(title: "")] if @lesson.videos.blank? %>
<%= f.simple_fields_for :videos do |g| %>
<%= g.input :title, label: "Video title" %>
<%= g.input :video, as: :file, lebel: "Select Video" %>
<% end %>
<center><%= f.submit class: "lesson-category btn-danger" %></center>
<% end %>
</div>
<script type="text/javascript">
$(".newLessonform").ajaxForm(function(data) {
$("#primaryModalContent").html(data.message);
});
</script>
위 스크립트에서 ajaxForm을 지정했습니다. 이에 대한 모달 형식은 다음과 같습니다.
<div class="modal fade" id="primaryModal" role="dialog">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" , data-dismiss="modal">×</button>
<h1 class="modal-title" id="modalTitle"></h1>
</div>
<div class="row modal-body" id="primaryModalContent">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
크롬 콘솔의 오류가 발견되지 않았습니다. 오류 : (...) $. ajaxForm은 기능이 아닙니다. 나는 약 일주일 동안 붙어 있습니다. 어느 누구도 내게 해결책을 줄 수 있겠 어.
미리 감사드립니다.
가 확인 : 당신은 레일 UJS에 대한 몇 가지 문서를 찾을 수 있습니다
다음:
마지막으로, 당신은 AJAX 작업을 처리하는 컨트롤러를 업데이트해야 올바른 js 라이브러리 파일에 올바른 순서로 (예 : jQuery 라이브러리 –
) 예, 올바른 순서로 추가했습니다. –
@ ThananjayaChakravarthy 오류 메시지는 ... $ .ajaxForm이이 플러그인에 의해 제공되었음을 나타냅니다. http://malsup.com/jquery/form/. jquery 이후에 페이지에 포함되어야하지만, 사용하기 전에 포함되어야합니다. – ADyson