'create'方法完成后渲染javascript

时间:2012-09-19 02:24:30

标签: javascript ruby-on-rails ajax

我正在创建一个ajax表单,它会在我的rails应用程序中成功完成'create'方法后执行一些函数。它围绕查找单词的定义,显示它们,然后在用户保存所需定义后将其从屏幕中删除。我遇到的问题是从success.js.erb访问函数rollUp和revertButtons(存储在words.js中)。我甚至尝试将函数放在application.js中,但它仍然无效。现在,当文件中包含这些函数时,success.js.erb甚至根本不执行...有什么想法吗?

创建行动:

if @word.save!
    params['word_definition'].each do |definition|
        if @word.definitions.create(text: definition)
            numDefs += 1
        end
    end
    respond_to do |format|
        if numDefs > 0  
            format.js { render action: "success" }
        end
    end
else
    format.js { render action: "failure" }
end

words.js:

function submitForm(){
    if(isSubmittable()){
        $('#findWord form').serialize();
        $('#findWord form').submit();
    }
}
// other functions, like revertButtons() and rollUp() are stored here too

success.js.erb:

revertButtons();
rollUp();
$('<div />', {  class: "alert alert-success",
            text: "The word has been saved",
         }).wrap('<div class="single_error" />').parent().appendTo("#fieldAndErrorsContainer");

1 个答案:

答案 0 :(得分:0)

是的,我觉得自己像个白痴。我在$(document).ready()中声明了我的所有函数,因此它被降级到该函数的范围,无法从其他地方访问。经验教训。