水星编辑器(0.9.0)无法保存Rails 3.2.11中的更改



我正在向一个简单的博客应用程序添加水银,并且想使用最新版本,但是我无法让它保存更新。下面是我的代码:

Gemfile:

gem 'rails', '3.2.11'
gem "thin", "~> 1.3.1"
gem 'mercury-rails'
gem 'paperclip'
group :development do
  gem 'taps'
  gem "nifty-generators"
  gem 'sqlite3'
end
gem 'jquery-rails'

blogs_controller.rb:

  def update
    @blog = Blog.find(params[:id])
    if @blog.update_attributes(params[:blog])
      redirect_to @blog
    else
      render 'edit'
    end
  end
  def mercury_update
    blog = Blog.find(params[:id])
    blog.content         = params[:content][:blogContent][:value]
    blog.save!
    render text: ""
  end

blog.rb:

class Blog < ActiveRecord::Base
  attr_accessible :title, :content, :author
end

routes.rb:

  Mercury::Engine.routes
  mount Mercury::Engine => '/'
  root :to => "pages#home"
  namespace :mercury do
    resources :images
  end
  resources :blogs do
    member { post :mercury_update }
  end

mercury.html.erb

  <body>
    <script type="text/javascript">
      // Set to the url that you want to save any given page to, leave null for default handling.
      var saveUrl = null;
      // Instantiate the PageEditor
      new Mercury.PageEditor(saveUrl, {
        saveStyle:  'form', // 'form', or 'json' (default json)
        saveMethod: null, // 'PUT', or 'POST', (create, vs. update -- default PUT)
        visible:    true  // boolean - if the interface should start visible or not
      });
    </script>
  </body>

博客/show.html.erb:

 <div id="blogFull" class="rounded-corners-mild">
 <div id="blogTitle">
   <h1 style="font-size:150%; text-align:center; " class="mercury-region" ><%= @blog.title%></h1>
  </div>
  <div data-mercury="full" id="blogContent" class="mercury-region">
    <%= raw @blog.content %>
  </div><br />
  <%= link_to "mercury", "/editor" + "/blogs" + "/#{@blog.id}", :class => 'bestButton',  
          id: "edit_link", data: {save_url: mercury_update_blog_path(@blog)} %>

添加到:mercury.js:

jQuery(window).on('mercury:ready', function() {
        var saveUrl = $("#edit_link").data("save-url");
        Mercury.saveUrl = saveUrl;
});
Mercury.on('saved', function() {
        window.location.href = window.location.href.replace(//editor//i, '/');
});

我还尝试了这个:to mercury.js:

  onload: function() {
    //Mercury.PageEditor.prototype.iframeSrc = function(url) { return '/testing'; }
    Mercury.on('ready', function() {
      var link = $('#mercury_iframe').contents().find('#edit_link');
      Mercury.saveUrl = link.data('save-url');
      link.hide();
    });
    Mercury.on('saved', function() {
      window.location.href = window.location.href.replace(//editor//i, '/');
    });
  }

既不工作。他们都帮我找到了编辑,让我开始编辑。我还不能保存任何更改。谢谢你。

尝试保存时是否收到错误消息?上面写了什么?如果显示无法保存,但URL正确,则需要检查日志文件。

我在设置正确的saveUrl时遇到了问题,并将以下内容添加到mercury.js中为我修复了它;

onload: function() {
    Mercury.on('ready', function() {
        var link = $('#mercury_iframe').contents().find('#edit_link');
        console.log("mercury ready ready", link);
        mercuryInstance.saveUrl = link.data('save-url');
        link.hide();
    });
    Mercury.on('saved', function() {
        window.location.href = window.location.href.replace(//editor//i, '/');
    });
}

在railscast的这个线程中找到的。

编辑:

我在你的代码中注意到了别的东西。您为POST操作创建了一个路由。在hg .html.erb中,saveMethod默认设置为'PUT'。将saveMethod改为POST

对于我来说,"mercuryInstance"没有得到上面的解决方案。我确实把这个javascript添加到hg .js的末尾:

    jQuery(window).on('mercury:ready', function() {
        var link = $('#edit_link');
        Mercury.saveUrl =link.attr('data-save-url');
        link.hide();
    });

相关内容

  • 没有找到相关文章

最新更新