大家好,
我已经尝试四次在Rails应用程序中实现history.js。 我有一种方法运行得相当不错,但代码非常丑陋。今天我再次查看了代码,并想到:我该如何使其更好、更容易、更DRY?!
目前我所做的(运行得相当不错,但并非完美):
- 将
remote: true
设置为我的链接 - jquery-ujs获取
js.erb
我的 HTML 如下:
<body>
<div id="content">
some content with buttons, etc.
</div>
</body>
js.erb
包含以下内容:History.pushState(
{
func: '$(\'#content\').html(data);',
data: '<%= j(render template: "news/index", formats: [:html]) %>'
},
'test title',
'<%= request.url %>'
);
然后,history.js获取该函数并提供数据。因此,它用新生成的代码替换了
content
-div,并更新了URL。 我必须将此代码放入每个(!)js.erb
文件中。
我最后的想法是:
- 将
remote:true
设置为我的链接 - 当链接被点击时,它会获取一些
js.erb
,并替换content
-div - 所有具有
data-remote="true"
的链接都将获得ajax:success
处理程序 - 在
ajax:success
上,新URL将推送到history.js中
但内部仍然存在一个问题。然后我有JavaScript代码:
$(document).on('ajax:success', 'a[data-remote="true"]', function() { ... });
问题是:如果我替换包含链接(应该触发事件的链接)的
标签,则
也许有人能解决我的问题...
或者有更好的方法吗?
ajax:success
永远不会触发。也许有人能解决我的问题...
或者有更好的方法吗?