1

Я пытаюсь создать основы приложения с помощью Ember на Rails, и я получаю эту ошибку:Ошибка при загрузке маршрута: - Почему я не извлекаю рельсы формы данных?

Ошибка при обработке маршрута: сообщения

Было бы полезно, если бы Ember сказал что-то о ошибка, но это не так. Вот код, о котором идет речь (я считаю, что я включаю все необходимые части).

// PostsRoute 

App.PostsRoute = Ember.Route.extend({ 
    model: function(){ 
     return this.store.find('post'); 
     // return [{title: 'fixture'}, {title: '2'}] 
    } 

}) 

// Router. 

App.Router.map(function() { 
    // location: 'auto', 
    // rootURL: '/', 
    this.resource('posts', { path: '/' }) 

}); 

// Routes.rb 
    resources :posts do 
    resources :comments 
    end 

// Post model - Ember 
App.Post = DS.Model.extend({ 
    title: DS.attr('string'), 
    description: DS.attr('string'), 

    imageFileName: DS.attr('string'), 
    imageContentType: DS.attr('string'), 
    imageFileSize: DS.attr('number'), 
    imageUpdatedAt: DS.attr('date'), 

    createdAt: DS.attr('date'), 
    updatedAt: DS.attr('date'), 

    userId: DS.attr('number'), 
}); 


// Posts controller.rb 

class PostsController < ApplicationController 
    before_action :set_post, only: [:show, :edit, :update, :destroy] 

    respond_to :html 

    def index 
    @posts = Post.all 
    puts "in PostsController index. " 
    puts @posts 
    respond_with(@posts) 
    end 

    ... 

// Post Serializer 
class PostSerializer < ActiveModel::Serializer 
    attributes :id, :title, :description, :created_at, :updated_at, :user_id, :image_file_name, :image_content_type, :image_file_size, :image_updated_at 
end 

Я пытаюсь понять, что нужно настроить для Ember для получения данных из Rails API. Rails-мудрый, он возвращает данные в порядке.

Из чего я понимаю, вот как идет приложение. Ember сначала проверяет маршрут (здесь, PostsRoute). Ожидается, что маршрут будет иметь «модель», поэтому он будет выглядеть как свойство модели. Здесь свойство модели делает вызов в Магазин, чтобы получить все сообщения. т. е. this.store.find ('post'). [заменяет этот вызов статическим массивом, кажется, работает нормально.]

Это делает вызов функции индекса Rails PostsController. Я могу подтвердить, что эта функция достигнута из-за заявлений печати, которые я там поставил. Функция index возвращает переменную с моделями post-post.

Оттуда должно быть указано JSON-ified для Ember, чтобы иметь возможность использовать его. Таким образом, они помещаются через сериализатор, который здесь является post_serializer.rb. Это определяет, какие свойства отправлять как форму JSON.

Я подозреваю, что существует некоторая проблема с тем, как я обрабатываю эту сериализуемую часть, так как я подтвердил, что сообщения действительно были загружены в индексной функции PostsController.rb, но не удалось (я считаю) сделать путешествие обратно в Эмбер.

Я не понимаю, почему. Что мне не хватает?

Если это какая-то проблема, есть некоторые отношения has_many, которые я еще не включил, потому что я сначала хотел это сделать. И для полноты картины, здесь полная ошибка, как на консоли Chrome:

Error while processing route: posts ember.js?body=1:15376 
logToConsole ember.js?body=1:15376 
logError ember.js?body=1:26315 
defaultActionHandlers.error ember.js?body=1:26272 
triggerEvent ember.js?body=1:26363 
trigger ember.js?body=1:46876 
Transition.trigger ember.js?body=1:46721 
(anonymous function) ember.js?body=1:46526 
tryCatch ember.js?body=1:47310 
invokeCallback ember.js?body=1:47322 
publish ember.js?body=1:47293 
publishRejection ember.js?body=1:47235 
(anonymous function) ember.js?body=1:29438 
DeferredActionQueues.invoke ember.js?body=1:682 
DeferredActionQueues.flush ember.js?body=1:752 
Backburner.end ember.js?body=1:138 
Backburner.run ember.js?body=1:193 
run ember.js?body=1:18226 
hash.error ember-data.js?body=1:1886 
fire jquery.js?body=1:3120 
self.fireWith jquery.js?body=1:3232 
done jquery.js?body=1:9278 
callback jquery.js?body=1:9686 

ответ

1

Обещание возвращенный model крюк отвергает. Чтобы узнал, почему, замените код в модели крюком с этим:

App.PostsRoute = Ember.Route.extend({ 
    model: function() { 
    return this.store.find('post').catch(function (error) { 
     debugger; 
    }); 
    } 
}); 

При загрузке маршрута в вашем браузере, то debugger вызов будет приостановить выполнение, и позволит вам взглянуть на ошибки в отчетах. В идеале ошибка будет содержать ответ на ваш вопрос о том, почему все не работает.

 Смежные вопросы

  • Нет связанных вопросов^_^