RJS в контроллере
- я поместил следующие 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 ответа
Решение
Возможно, это неправильно, потому что вы пытаетесь использовать 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 вместо рендеринга с контроллера.
В твоем контроллере только пиши
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'
Похоже, вы забыли включить prototype.js
в вашем макете. Убедитесь, что у вас есть
<%= javascript_include_tag "prototype" %>
в разделе HEAD макета вашего документа.