2017-10-10 74 views
0

我試圖用給ajaxForm提交模式窗體和顯示模式本身的響應。但是,我得到未捕獲的類型錯誤(...)。ajaxForm不是一個函數。 基本上我想創建一個教訓創建表單模式窗體和必須提交,我的應用程序由兩個API控制器和前端控制器。uncought TypeError:ajaxForm不是在rails 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 controller.The是我的前端控制器和課相關形式。

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">&times;</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> 

在Chrome控制檯中的錯誤,是未被捕獲的錯誤:(...)$給ajaxForm不是一個函數。 我被困在這裏約一個星期。任何人都可以給我一個解決方案。

在此先感謝。

+0

確保您正在加載在正確的JS庫文件,這樣做正確的順序,即後jQuery庫 –

+0

是啊,我在正確的順序添加爵士。 –

+0

@ThananjayaChakravarthy錯誤消息會建議你沒有... $ .ajaxForm由該插件提供:http://malsup.com/jquery/form/。它必須包含在jquery之後的頁面中,但在你想使用它之前。 – ADyson

回答

0

在軌使用AJAX的形式,最好的辦法是使用rails_ujs

首先,你必須告訴你希望你的窗體上的AJAX動作rails_ujs

<%= simple_form_for @lesson, html: {class: "newLessonform"}, remote: true do |f| %> 

然後在視圖中添加新的文件,這一觀點將在全成創建操作由AJAX開始後呈現動作:views/lessons/create.js.erb
在裏面你可以把你的js代碼,這個代碼將在同一頁AJAX的形式執行。這只是一個視圖,你可以使用控制器的變量。

$("#primaryModalContent").html("<%= @message %>") 

最後,你需要更新你的控制器來處理AJAX行動:

def create 
    @lesson = Lesson.new(lesson_params) 
    if @lesson.save 
    @success = true 
    @message = "Lesson Created Successfully" 
    else 
    @success = false, 
    @message = "Lesson Creation Failed" 
    end 

    respond_to do |format| 
    format.js 
    end 
end 

在這裏你可以找到有關的Rails UJS一些文檔:
http://guides.rubyonrails.org/working_with_javascript_in_rails.html#remote-elements https://blog.codeship.com/unobtrusive-javascript-via-ajax-rails/

+0

非常感謝,給我一個關於在rails中使用ajax的圖片。 –

+0

我已經執行了代碼。但是,錯誤顯示爲未知格式,指向「respond_to do | format |」 –

相關問題