RJS в контроллере - PullRequest
0 голосов
/ 14 июня 2010
  • я поместил следующие 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
  • так как я могу избавиться от этой ошибки ...?

Ответы [ 3 ]

1 голос
/ 14 июня 2010

в вашем контроллере только пишите

   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 голос
/ 14 июня 2010

Возможно, это неправильно, потому что вы пытаетесь использовать responseds_to_parent в блоке response_to.

Я не знаю, сможете ли вы их смешать. Предлагаю попробовать без блока response_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 вместо рендеринга с контроллера.

0 голосов
/ 14 июня 2010

Похоже, вы забыли включить prototype.js в свой макет. Убедитесь, что у вас есть

<%= javascript_include_tag "prototype" %>

в разделе HEAD макета вашего документа.

...