ActionController :: UnknownFormat使用Backbone.js response_with

时间:2014-10-17 20:01:50

标签: ruby-on-rails backbone.js

我尝试在我的收藏中获取数据,但我在Rails中收到了UnknownFormat错误。我跟随this RailsCast来学习一些Backbone。

我在通过集合在视图中呈现数据的部分,但是当我使用示例代码时,我得到一个UnknownFormat错误。

这是我的Rails MoviesController

class MoviesController < ApplicationController
  respond_to :json

  def index
    respond_with Movie.all
    if logged_in?
      @user = User.find(session[:user_id])
      @movies = @user.movies
    end
  end

这是我的Rails路由器文件,

Rails.application.routes.draw do

  get 'sessions/new'

  root               'movies#index'
  get   'signup'  => 'users#new'

  get    'login'   => 'sessions#new'
  post   'login'   => 'sessions#create'
  delete 'logout'  => 'sessions#destroy'

  scope "api" do
    resources :movies, :defaults => {:format => "json"}
  end

  resources :users

这是我的Backbone系列

class Movieseat.Collections.Movieseats extends Backbone.Collection

    url: '/api/movies'

我做了一些研究,发现有很多人说我需要在我的电影资源中添加, :defaults => {:format => "json"}。但这对我没有帮助。有谁知道造成这个错误的原因是什么?

1 个答案:

答案 0 :(得分:1)

我今天遇到了这个问题。我有两个可能的修复...

1)只需删除respond_to,respond_with语法并将其替换为render json语法:

class MoviesController < ApplicationController
  def index
    @movies = Movie.all

    if logged_in?
      @user = User.find(session[:user_id])
      @movies = @user.movies
    end
    render json: @movies.to_json
  end
end

我知道这可能不太理想,但这对我有用。

2)这个我没有尝试,但它可能值得一试(不要与第一个解决方案一起使用)。

主干设置中的某个位置:

$.ajaxSetup({       
    dataType: 'json'
});