Кнопка возврата Ember Rails не отображает шаблон даже без вложенных маршрутов

Я пытаюсь получить простое приложение Ember-Rails, и все выглядит нормально, но кнопка «Назад» полностью удаляет все отображаемые элементы. Без ошибок.

Насколько я понимаю, это происходит потому, что Ember ожидает, что «родительский» шаблон уже отрендерен, и не выполняет его повторный рендеринг. В моем приложении я сначала отображаю список «сообщений» со ссылками на каждое сообщение. Каждая ссылка должна открывать соответствующий пост, заменяя отображаемую страницу «сообщений». Он делает это просто отлично, затем, когда я нажимаю кнопку «Назад», он делает что-то интересное: он отображает индексную страницу, а затем полностью удаляет все в шаблоне приложения (включая индекс и т. Д.).

Вот соответствующие фрагменты кода:

Во-первых, rails application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>Slimgur</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= stylesheet_link_tag    'bootstrap', media: 'all', 'data-turbolinks-track' => true %>
  <%= stylesheet_link_tag    'bootstrap-theme', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>
<%= yield %>

<div class='container'>
    <div id="ember-app">
    </div>
</div>

</body>
</html>

//This is the page that is rendered by rails.
<h1>Static#index</h1>
<p>Find me in app/views/static/index.html.erb</p>

/* Application.js file. After all require statements. */
App = Ember.Application.create({rootElement: '#ember-app'});

/* Router.js */
// --------------------------
App.Router.map(function() {
  this.resource('posts');
  this.resource('post', { path: 'posts/:id' });
})

/* Application.hbs. */
// --------------------------
<header>
    <article>
        <div class="logo">
            <h1>
                <a href="#">App</a>
            </h1>
        </div>
</article>
</header>

{{!-- This is intended to render all Ember Templates.  --}}
<section id="main">
    {{{outlet}}}
</section>

<footer>
    <p> Testing Footer one two three </p>
</footer>

/* posts.hbs */
// --------------------------
<article id="posts">
    <h1>Posts</h1>

        <ul>
            {{#each post in model}}
                <li>{{#link-to 'post' post}}{{post.title}}{{/link-to}}</li>
            {{/each}}
        </ul>
</article>

{{outlet}}

/* post.hbs*/
// --------------------------
<h2>{{title}}</h2>

/* Ember Routes: */
// --------------------------
App.PostsRoute = Ember.Route.extend({
    model: function(){
        return this.store.find('post');
    },
})

App.PostRoute = Ember.Route.extend({
    model: function(params){
        return this.store.find('post', params.id);
    },
})

Я считаю, что файлы .hbs компилируются в шаблоны рулей.


person Darshan    schedule 22.11.2014    source источник
comment
Возможный дубликат Ember.js с Rails4: кнопка возврата в браузере сбой приложения ember   -  person Chris    schedule 15.07.2016


Ответы (1)


Ну, в конце концов, я удалил турболинки. Я все еще немного не уверен в этом, но, похоже, это никак не мешает моему приложению.

Для этого вам придется удалить гем turbolinks, строку «требовать turbolinks» в application.js и теги turbolink в application.html.erb.

Я скрещиваю пальцы, надеясь, что не испортил ничего, чего я не видел.

person Darshan    schedule 24.11.2014