rails 4模板在ajax中渲染时丢失错误

时间:2013-12-13 18:30:19

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我有以下ajax功能

$.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

我在sub_categories/sub_cat.json.erb

中有json文件

当我运行错误时

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 个答案:

答案 0 :(得分: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 var或预渲染HTML的情况下调用status。这只是惯例,如果不是您需要的话,请道歉。我看到很多人在这里过于复杂,当简单性会更好的时候


<强>的Ajax

另外,我相信你的ajax data var:

有问题
data: 'sub_cat=45',

应该是

data: {sub_cat: "45"},