2013-12-13 31 views
0

在使我有以下AJAX功能軌道4模板缺失錯誤,在阿賈克斯

$.ajax({ 
    url: '/sub_categories/sub_cat', 
    data: 'sub_cat=45', 
    success: function() { 
     alert('success'); 
    } 
}) 

這裏是我的控制器

require 'json' 
class SubCategoriesController < ApplicationController 
     def show 
     end 
     def sub_cat 
      @sub_categories = SubCategory.where(category_id: params[:cat_id]) 
      html = render_to_string 'sub_categories/sub_cat' 
      response_html true,html 
     end 
end 

我的應用程序控制器

def response_html status,html 
    respond_to do |format| 
     format.json {render json: { 
      status: status, 
      html: html, 
     } 
     } 
     format.html 
     end 
    end 

我有JSON文件在sub_categories/sub_cat.json.erb

當我運行得到錯誤的

ActionView::MissingTemplate at /sub_categories/sub_cat.json 
Missing template sub_categories/show, application/show with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in: 
    * "/home/editmehere/Documents/site/name/app/views" 

route.rb

resources :sub_categories do 
    get 'sub_cat', on: :collection 
    end 

爲什麼我收到的錯誤是這樣,我怎麼能解決這個問題。任何人都可以幫助我解決它。

+1

請笑你的'sub_cat.json.erb'。嘗試刪除'erb' exenstion以查看發生了什麼。 – Thanh

回答

0

我猜你想保持你的應用程序幹,但你爲什麼不只是使用在SubCategoriesController

class SubCategoriesController < ApplicationController 
    def sub_cat 
     @sub_categories = SubCategory.where(category_id: params[:cat_id]) 
     respond_to do |format| 
     format.json 
     format.html 
     end 
    end 
end 

這將允許你打電話sub_cat.json.erb,而不必通過status var或預先呈現HTML。這只是約定,所以如果不是你需要的話,我們很抱歉。我看到很多人在這裏過於複雜的事情,簡單的時候會工作更好


阿賈克斯

而且,我相信你有一個問題,你的Ajax data VAR:

data: 'sub_cat=45', 

應該

data: {sub_cat: "45"},