我有一个简单的 Controller ,我可以同时响应 html
和 json
.我正在使用 json
Backbone 应用程序的响应。一切都按预期工作,除了当我单击使用 show
的链接时方法,然后单击返回按钮,index
方法只是打印一个大字符串 JSON
进入浏览器。如果我刷新,它会按预期显示 HTML。这是 Controller 。
class RecipesController < ApplicationController
def index
@user = User.find(params[:user_id])
@recipes = Recipe.all
respond_to do |format|
format.html
format.json { render json: Recipe.where(user_id: params[:user_id]).featured }
end
end
...
end
我尝试为 response.xhr?
添加支票,并且只渲染 JSON
如果它是一个 AJAX 请求,但那没有用。编辑
这是一个不使用 turbolinks 的 Rails 3 应用程序。
编辑 2
这是相关的主干代码。
# app/assets/javascripts/collections/recipe_list_.js.cofee
@App.Collections.RecipeList = Backbone.Collection.extend
url: ->
"/users/#{@userId}/recipes"
model: window.App.Models.Recipe
initialize: (opts) ->
@userId = opts.userId
# app/assets/javascripts/app.js.coffee
$ ->
urlAry = window.location.href.split('/')
userId = urlAry[urlAry.length - 2]
App = window.App
App.recipeList = new App.Collections.RecipeList(userId: userId)
App.recipeListView = new App.Views.RecipeListView
最佳答案
你可以尝试使用/recipes.html
和/recipes.json
和/recipes/1.html 和/recipes/1.json
而不是依靠主干和历史来始终发送正确的 header
关于ruby-on-rails - Rails Controller 在浏览器中呈现 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26531024/