0

我想使用 Mercury Editor (https://github.com/jejacks0n/mercury) 在我的 RoR 应用程序的博客区域中编辑帖子。我没有任何页面模型,我只想编辑帖子而不是所有网站的页面。

在我的 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 无法保存到 url:http://localhost:3000/blog/test

4

2 回答 2

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();
});

我认为第二种解决方案更好,因为汞更新应用的任何更新都不会触及这一点。

于 2012-03-22T16:03:59.760 回答
1

Mercury.saveUrl = link.data('save-url');

于 2012-09-02T13:17:03.340 回答