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();
});
Я делаю следующее:
localhost:3000
(Добро пожаловать на борт, вы катаетесь на рубине на странице рельсов)localhost:3000/posts
(позвоночник вызывает егоindex.jst.ejs
шаблон)щелкающий
new post
затем маршрут меняется наlocalhost:3000/posts#/new
(new.jst.ejs
)щелкающий
create post
Кнопка затем маршрут меняется наlocalhost:3000/posts#/id
(`show.jst.ejs')Теперь нажмите на
browsers back button
маршрут меняется наlocalhost:3000/posts#/new
(new.jst.ejs
)повторное нажатие кнопки "назад" приводит меня к
localhost:3000/posts
(index.jst.ejs
)Здесь я вижу, что новая запись была успешно введена.
повторное нажатие кнопки "назад" приводит меня к
localhost:3000
через перезагрузку.при нажатии
forward button
вернуться кlocalhost:3000/posts
(index.jst.ejs
Я все еще вижу свои записи.Теперь, если я уничтожу свои записи и вернусь к
localhost:3000
и вернемся, мы увидим, что записи не уничтожены.