我可以在没有特定页面控制器的情况下使用Mercury Editor吗?

时间:2012-01-04 10:04:52

标签: ruby-on-rails-3.1 mercury-editor

我想使用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

2 个答案:

答案 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');