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

この方法では、ajax 呼び出しの場合にのみ js で応答します。ただし、コントローラーからレンダリングする代わりに、rjs ファイルを使用することをお勧めします。

于 2010-06-14T13:55:10.430 に答える
0

prototype.jsレイアウトに含めるのを忘れたようです。あなたが持っていることを確認してください

<%= javascript_include_tag "prototype" %>

ドキュメント レイアウトの HEAD セクションにあります。

于 2010-06-14T13:09:58.073 に答える