摘要:当我尝试向Jeditable提供一个onsubmit
或回调时,我得到了错误。onreset
Object [function] has no method 'apply'
我是如何到达这里的:我一直在开发一个 Rails 插件,以提供 Jeditable 和 jWYSIWYG用于就地所见即所得编辑。开发是由我正在处理的 Rails 项目驱动的,该项目需要特定的功能。
我添加的选项之一是能够使用按钮触发 Jeditable 的编辑模式,而不是单击可编辑文本本身,遵循此答案中建议的模式。但是,下一步是在编辑模式下隐藏按钮,并在离开编辑模式时再次显示它。
隐藏很容易;我刚刚在发送.toggle()
到按钮的触发函数中添加了一行。揭示更棘手。我想我需要.toggle()
再次提交或取消,并且有用的是,Jeditable 提供onsubmit
和onreset
回调。
但是,当我尝试使用这些回调时,我得到了这个Object [something] has no method 'apply'
错误。
我正在尝试什么:因为这是在 Rails 助手的上下文中,实际的机制比这更复杂一些,但结果是我试图遵循这种模式,在 args 中传递 Jeditable :
"onsubmit":"showTrigger",
然后包括这个脚本:
function showTrigger(settings, original) {
$(".edit_trigger[id='element_id']").toggle();
}
但是,在提交更改或取消编辑时,我收到错误
Object showTrigger has no method 'apply'
...如上所述。
我还尝试直接发送一个函数作为"onsubmit"
参数(即"onsubmit": "function(settings, original){$(\".edit_trigger[id='element_id']\").toggle();}"
然后我只是得到Object function(settings, original){$(\".edit_trigger[id='element_id']\").toggle();} has no method 'apply'
了。
我处理这个回调的方式一定有问题。有任何想法吗?
ETA:这个答案向我表明,当它需要一个函数时,我以某种方式向 Jeditable 提供了一个字符串。但是,因为我在 Rails 助手的上下文中工作,所以我完全不确定如何解决这个问题 - 该"showTrigger"
位在助手中设置为 Ruby 变量,虽然window.showTrigger()
是在加载窗口时定义的,但我不知道如何在 Ruby 变量中指定该函数,以便在页面加载时将其识别为函数。