У меня проблема, похожая, но не совсем такая, как я видел, много обсуждали.Просто хочу изложить это здесь на случай, если у кого-то есть понимание этой конкретной ситуации.У меня есть ряд блоков выбора, и после того, как последний из них был выбран, я хочу обновить текстовое поле с помощью некоторого текста, основанного на вышеупомянутом.
У меня есть следующий код в моем представлении (фактически в частичном) для поля выбора:
<%= f.collection_select :xyz_id, @xyzs, :id, :display_name,
{ :prompt => "Select a XYZ..." },
{ :onchange => "#{remote_function(:url => {:action => "update_text_field"},
:with => "'abc_id='+$('#foo_abc_id').val()")}",
:class => "blah" } %>
Метод update_text_field
в контроллере выполняет свою работу и вызывает replace_html
примерно так:
some_info = foo.bar.first(:order => "id DESC").name
render :update do |page|
page.replace_html 'myDivId', :partial => "shared/my_partial", :locals => { :some_info => some_info }
end
Наконец, my_partial
выглядит такthis:
<%= text_field_tag :special_info, some_info, :size => 20, :readonly => "readonly" %>
Часть, содержащая эту часть, имеет следующее:
<div id="myDivId"><%= render :partial => 'shared/my_partial',
:locals => { :some_info => some_info } %></div>
При запуске все работает хорошо, пока replace_html
не выдаст ошибку RJS:
Ошибка RJS:
TypeError: Результат выражения 'element.getElementsByTagName' [undefined] не является функцией
С последующим:
Element.update("myDivId",
"<input id=\"special_info\"
name=\"special_info\"
readonly=\"readonly\" size=\"20\"
type=\"text\" value=\"The right text\"
/>");
Есть идеи по поводу этой ошибки?