控制器中的RJS

时间:2010-06-14 12:59:39

标签: ruby-on-rails rjs

  • 我已将以下rj放入控制器......但它给了我以下错误......
  

TypeError:Element.update不是函数

   respond_to do |format|
    format.js do
      responds_to_parent do
        render :update do |page|
          page.replace_html 'errorLay', :text => "Page with the same name already exists."
          page.show 'errorLay'
          page.delay(2) do
            page.hide 'errorLay'
          end
        end
      end
    end
  end
  • 那我怎么能摆脱这个错误......?

3 个答案:

答案 0 :(得分:1)

控制器中的

只能写

   render :update do |page|
      page.replace_html 'errorLay', :text => "Page with the same name already exists."
      page.show 'errorLay'
      page.delay(2) do
        page.hide 'errorLay'
      end
    end

以及您用于Ajax的任何内容link_to_remote或其他任何内容don't write :update=>'some_div'

答案 1 :(得分:1)

可能是错误的,因为您尝试在respond_to块中使用responds_to_parent。

我不知道你是否可以混合它们。我建议不要使用respond_to块。 要正确回应请求类型,您可以这样做

if request.xhr?
  responds_to_parent do
    render :update do |page|
      page.replace_html 'errorLay', :text => "Page with the same name already exists."
      page.show 'errorLay'
      page.delay(2) do
        page.hide 'errorLay'
      end
    end
  end
end

以这种方式只响应js,当ajax调用时。 但我建议使用rjs文件而不是从控制器渲染。

答案 2 :(得分:0)

听起来你忘了在你的版面中加入prototype.js。确保你有

<%= javascript_include_tag "prototype" %>

在文档布局的HEAD部分。