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

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
  • 那么我怎样才能摆脱这个错误......?
4

3 回答 3

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

以及您用于 Ajaxlink_to_remote 或其他任何东西的任何东西don't write :update=>'some_div'

于 2010-06-14T13:46:56.837 回答
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 文件而不是从控制器渲染。

于 2010-06-14T13:55:10.430 回答
0

听起来您忘记了prototype.js在布局中包含。确保你有

<%= javascript_include_tag "prototype" %>

在文档布局的 HEAD 部分。

于 2010-06-14T13:09:58.073 回答