我想使用Mercury Editor(https://github.com/jejacks0n/mercury)编辑我的RoR应用程序的博客区域中的帖子。我没有任何Pages模型,我只想编辑帖子而不是所有网站的页面。
在我的routes.rb中:
resources :posts do
member { post :mercury_update }
end
在我的posts_controller.rb中:
def mercury_update
post = Post.find(params[:id])
post.name = params[:content][:page_name][:value]
post.content = params[:content][:page_content][:value]
post.save!
render text: ""
end
并且也做了:
$(window).bind('mercury:ready', function() {
var link = $('#mercury_iframe').contents().find('#edit_link');
Mercury.saveURL = link.data('save-url');
link.hide();
});
$(window).bind('mercury:saved', function() {
window.location = window.location.href.replace(/\/editor\//i, '/');
});
并在mercury.html.erb中将保存样式更改为“表单”。
即使遵循这些步骤,当我尝试在测试帖子中保存更改时,我一遍又一遍地收到此错误:
Mercury无法保存到网址:http://localhost:3000/blog/test
答案 0 :(得分:2)
我也有同样的问题,javascript没有加载。我建议考虑将javascript覆盖放在onload区域内的/app/assets/javascript/mercury.js中。这就是我的样子:
onload: function() {
$(window).bind('mercury:ready', function() {
var link = $('#mercury_iframe').contents().find('#edit_link');
Mercury.saveURL = link.data('save-url');
link.hide();
});
},
另一种选择是将覆盖代码放在文件/app/assets/javascript/mercury_override.js中,如下所示:
$(window).bind('mercury:ready', function() {
var link = $('#mercury_iframe').contents().find('#edit_link');
Mercury.saveURL = link.data('save-url');
link.hide();
});
我认为第二种解决方案是更好的解决方案,因为汞更新中应用的任何更新都无法触及。
答案 1 :(得分:1)
Mercury.saveUrl = link.data('save-url');