2012-01-04 16 views
0

我想使用Mercury Editor(https://github.com/jejacks0n/mercury)編輯我的RoR應用程序的博客區域中的帖子。我沒有任何頁面模型,我只想編輯帖子,而不是所有網站的頁面。我可以在沒有特定頁面控制器的情況下使用Mercury Editor嗎?

在我的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。

即使下面這些步驟,我得到這個錯誤了,當我嘗試保存在測試後改變了:

水星無法保存的網址:http://localhost:3000/blog/test

+0

看起來你的SaveURL沒有設置正確。 #edit_link上的'save-url'是什麼? – 2012-02-14 21:44:56

回答

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

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

+1

請注意'Mercury.saveUrl'的情況。它從'Mercury.saveURL'改名。 – 2012-11-14 23:58:05

相關問題