backbone-rails: редактировать и уничтожать некорректно для скаффолда при загрузке страницы

Я обновил свой вопрос, пожалуйста, посмотрите на обновленную часть:

я использую rails-backbone gem в rails 4 и я последовал простому примеру, представленному на странице GitHub этого драгоценного камня. Backbone.js теперь работает нормально, но когда я нажимаю кнопку "Назад" в браузере, чтобы вернуться назад, чтобы увидеть весь мой список сообщений, тогда ничего не отображается. Это работает нормально, когда я нажимаю обратную ссылку, которая создается скаффолдом. Я напишу шаги ниже:

rails new demo34
// Edit your Gemfile and add

gem 'rails-backbone'
// Install the gem and generate scaffolding.

bundle install
rails g backbone:install
rails g scaffold User title:string content:string
rails g backbone:scaffold User title:string content:string
rake db:migrate

В моем app/views/users/index.html.erb со следующим содержанием:

<div id="users"></div>

<script type="text/javascript">
  $(function() {
    // Blog is the app name
    window.router = new Demo34.Routers.UsersRouter({users: <%= @users.to_json.html_safe -%>});
    Backbone.history.start();
  });
</script>

Backbone.js теперь работает нормально, но когда я нажимаю browser back button вернуться назад, чтобы увидеть весь мой список posts затем nothing is displayed, Работает нормально когда нажимаю back ссылка, которая генерируется scaffold,

Мой users_router.js.coffee выглядит следующим образом:

class Demo34.Routers.UsersRouter extends Backbone.Router
  initialize: (options) ->
    @users = new Demo34.Collections.UsersCollection()
    @users.reset options.users

  routes:
    "new"      : "newUser"
    "index"    : "index"
     ":id/edit" : "edit"
      ":id"      : "show"
    ".*"        : "index"

  newUser: ->
    @view = new Demo34.Views.Users.NewView(collection: @users)
    $("#users").html(@view.render().el)

  index: ->
    @view = new Demo34.Views.Users.IndexView(users: @users)
    $("#users").html(@view.render().el)

  show: (id) ->
    user = @users.get(id)

    @view = new Demo34.Views.Users.ShowView(model: user)
    $("#users").html(@view.render().el)

  edit: (id) ->
    user = @users.get(id)

    @view = new Demo34.Views.Users.EditView(model: user)
    $("#users").html(@view.render().el)

ОБНОВИТЬ:

Используя следующий код, я установил, что он работает для кнопки "Назад" для событий смены страницы по магистрали и турболинкам. Теперь мои базовые тексты не исчезают при нажатии кнопок назад. Но есть проблема с событием загрузки страницы. Позвольте мне объяснить на примере, что я имею в виду под моим кодом:

 $(document).on ('page:change', function(){

    Backbone.history.stop();
     Backbone.history.start();
     });

Я делаю следующее:

  1. localhost:3000 (Добро пожаловать на борт, вы катаетесь на рубине на странице рельсов)

  2. localhost:3000/posts (позвоночник вызывает его index.jst.ejs шаблон)

  3. щелкающий new post затем маршрут меняется на localhost:3000/posts#/new (new.jst.ejs)

  4. щелкающий create post Кнопка затем маршрут меняется на localhost:3000/posts#/id (`show.jst.ejs')

  5. Теперь нажмите на browsers back button маршрут меняется на localhost:3000/posts#/new (new.jst.ejs)

  6. повторное нажатие кнопки "назад" приводит меня к localhost:3000/posts (index.jst.ejs)

    Здесь я вижу, что новая запись была успешно введена.

  7. повторное нажатие кнопки "назад" приводит меня к localhost:3000 через перезагрузку.

  8. при нажатии forward button вернуться к localhost:3000/posts (index.jst.ejs Я все еще вижу свои записи.

  9. Теперь, если я уничтожу свои записи и вернусь к localhost:3000 и вернемся, мы увидим, что записи не уничтожены.

0 ответов

Другие вопросы по тегам