rails 2 replace_html помещает JavaScript на страницу - PullRequest
3 голосов
/ 10 января 2011

В моем контроллере у меня есть:

  respond_to do |format|
    format.js
  end

В моем rjs:

page.replace_html("source_credential_list", :partial => "source_credential_list", :object => @all_source_credentials) 

или

page.replace("source_credential_list", :partial => "source_credential_list", :object => @all_source_credentials) 

В моем частичном: (

<% fields_for(@brand_report_source_credential_key) do |ff|  %>
   <%= ff.select :source_credential_id , options_from_collection_for_select(@all_source_credentials,'id','credential_display_name')%>
<% end %>

На мой взгляд:

  <span id="source_credential_list">
    <%= render :partial => 'source_credential_list' %>
  </span>

Когда я заменяю его, он прекрасно работает, но только один раз, во второй раз, когда я получаю предупреждение с нулевым значением, я подозреваю, что промежуток исчез. Если я делаю replace_html, он вроде работает, он обновляет диапазон, но он помещает фактический rjs / javascript в диапазон, включая новый выбор / раскрывающийся список. Так что-то вроде этого:

Исходные учетные данные try {Element.update ("source_credential_list", "\ n \ n \ n"); } catch (e) {alert ('Ошибка RJS: \ n \ n' + e.toString ()); alert ('Element.update (\ "source_credential_list \", \ "\ n \ n \ n \");'); бросить е}

Я пытался переместить пролет в партиал и делать обе комбинации, но ничего не получалось. Я уверен, что это что-то очевидное ....

1 Ответ

1 голос
/ 10 января 2011

Я не уверен, какой фрагмент кода запускает это действие, но, предполагая, что оно вызвано вызовом link_to_remote, убедитесь, что в вашем вызове link_to_remote нет параметра: update => "source_credential_list" - иначевыполнит RJS и обновит элемент, указанный в коде JavaScript.

См. здесь: http://railsforum.com/viewtopic.php?pid=44191#p44191

Кроме того, когда вы выполняете page.replace, он работает только один раз, потому что page.replaceзаменяет указанный элемент , включая окружающие теги, поэтому, если указанный вами фрагмент не содержит тег span, он исчезнет при первом использовании.

...