【问题标题】:Mercury editor not saving edited values in Rails 4.2水星编辑器没有在 Rails 4.2 中保存编辑的值
【发布时间】:2015-03-07 14:01:34
【问题描述】:

我按照Railscast教程设置了水星编辑器。

mercuy.js

$(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, '/');
});

views/quotations/show.html.erb

<p><%= link_to "Edit Page", "/editor" + request.path, id: "edit_link", data: {save_url: mercury_update_quotation_path(@quotation)} %></p>

mercury.html.erb

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

routes.rb

  resources :quotations  do
    member { post :mercury_update}
  end

显示如下错误

Mercury was unable to save to the url: http://localhost:3000/quotations/1

控制台输出

Started PUT "/quotations/1" for 127.0.0.1 at 2015-03-07 19:20:49 +0530

AbstractController::ActionNotFound (The action 'update' could not be found for QuotationsController):

它适用于静态 ID,但不是这样。请帮我解决这个错误。

【问题讨论】:

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


    【解决方案1】:

    你的错误告诉你

    ActionNotFound 
    

    意味着您缺少 QuotationsController 中的水银更新。尝试添加

    def mercury_update
      quote = Quotations.find(params[:id])
      quote.FIELD_FROM_YOUR_DB = params[:content][:quotation_content][:value]
      quote.save!
      render text:""#tells mercury of successful save (I think)
    end
    

    如果这不起作用,请尝试检查您的控制台以了解水星传递的参数。它应该看起来像

    Started PUT "/quotations/1/mercury_update" for ...
      Parameters:{"content"=>{...}}
    

    请注意,这是一个 PUT 请求,这就是 Mercury 告诉您它正在执行的操作。因此需要更新路线

    resources :quotations do
      member do
        put 'mercury_update' #this may change your path to mercury_update_quotation_page_path(@quotation)
      end
    end
    

    另外,确保资源 :quotations 没有在 config/routes.rb 中定义两次。我按照该教程定义了它,然后运行 ​​

    rails g scaffold quotations
    

    为了自动生成视图等。此命令在我的 config/routes.rb 顶部再次定义引号为

    resources :quotations
    #...
    resources :quotations do #... This was my definition
    

    因此忽略了我对成员“mercury_update”的定义。

    最后,让我知道您保存的回复是否有效,而我的回复无效。 GL!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多