我有以下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
当我运行错误时
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
为什么我会收到这样的错误,如何解决它。任何人都可以帮我解决它。
答案 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"},