Метод Ответов в Ruby on Rails

0

Я пытаюсь передать Angular JS и Ruby on Rails для обмена некоторыми данными в примере приложения.

Я создал ресурс под названием " Entries и сделал этот контроллер:

class EntriesController < ApplicationController
  respond_to :json
  def index
    respond_with Entry.all
  end
  def show
    respond_with Entry.find(params[:id])
  end
  def create
    respond_with Entry.create(params[:entry])
  end
  def update
    respond_with Entry.update(params[:id], params[:entry])
  end
  def destroy
    respond_with Entry.destroy(params[:id])
  end
end

Это генерирует ответ в json с данными Entries. Я Entries базу данных " Entries:

# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
#
# Examples:
#
#   cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
#   Mayor.create(name: 'Emanuel', city: cities.first)

Entry.create!(name: "name1")
Entry.create!(name: "name2")
Entry.create!(name: "name3")
Entry.create!(name: "name4")
Entry.create!(name: "name5")
Entry.create!(name: "name6")
Entry.create!(name: "name7")

Я создал несколько записей. Мне нужно, чтобы Угловая получала их. Это мой файл js:

    var rafflerApp = angular.module('rafflerApp', ["ngResource"]);

rafflerApp.controller('RaffleCtrl', function ($scope, $resource) {

  //entries list 
  Entry = $resource("/entries/:id", {id: "@id"}, {update: {method: "PUT"}})
  $scope.entries = Entry.query();

  //add a name to the list
  $scope.addEntry = function(entry){
    entry = Entry.save($scope.newEntry);
    $scope.entries.push(entry);
    $scope.newEntry = {}
  } 

  //draw a winner
  $scope.selectWinner = function(draw){
    pool = [];
    angular.forEach($scope.entries, function(entry){
        if (!entry.winner){
          pool.push(entry)  
        }
    });
    if (pool.length > 0){
        entry = pool[Math.floor(Math.random()*pool.length)]
        entry.winner = true
        entry.$update(entry)
        $scope.lastWinner = entry   
    } 
  }
});

Если я попробую приложение, я не получаю никаких ошибок js, но список пуст. Если я попытаюсь перейти к /entries/(casual :id), я получаю эту ошибку:

ActionController::UnknownFormat in EntriesController#index 

и это подчеркивает эту часть кода:

def index
  respond_with Entry.all
end

Почему я получил эту ошибку? Как я могу позволить Ruby on Rails передавать данные с помощью Angular JS? Я также добавляю файл маршрутов:

Rails.application.routes.draw do
  resources :entries
  root to: "raffle#index"
end
  • 0
    Вы пытались посетить localhost: 3000 / records.json из браузера?
  • 1
    покажи свой файл config/routes.rb
Показать ещё 1 комментарий

1 ответ

1

Обновите файл route.rb для рендеринга JSON по умолчанию вместо HTML

resources :entities, defaults: {format: :json}
  • 0
    это все еще не работает. выполняя некоторый тест, я проверил, что журнал консоли показывает это сообщение, обновляя страницу [HTTP / 1.1 406 Недопустимо], когда я пытаюсь получить данные от localhost: 3000 / records .
  • 0
    Какие заголовки передаются с запросом?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню