我按照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, '/');
});
视图/报价/ 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但不是这样的。请帮我解决这个错误。
答案 0 :(得分:0)
您的错误告诉您
ActionNotFound
意味着您缺少QuotationsController中的mercury_update。尝试添加
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
另外,请确保资源:在config / routes.rb中未定义两次引用。我在该教程之后定义了它,然后运行
rails g scaffold quotations
为了自动生成视图等。此命令在我的config / routes.rb顶部再次定义了引用
resources :quotations
#...
resources :quotations do #... This was my definition
因此忽略了我对成员'mercury_update'的定义。
最后,让我知道您保存的回复是否有效,因为我的回复没有。 GL!