Как заменить div в Rails 3, используя AJAX? - PullRequest
2 голосов
/ 22 марта 2011

Я пытался заменить свой div в DOM, используя RJS.Вот код, который я попробовал, Контроллер имеет этот метод:

def change
  render :update do |page|
    page.replace(:test_id, :partial => "input",:locals =>{ :type => 'text', :name => 'user[user][contactinfo][city]', :val => "", :size => '244', :placeholder_text => 'Yes it is working...'})
  end
end

Представление содержит:

<div id = "test_id"></div>
<%= link_to "AJAX", "/poc/change", :remote => true %>

Теперь я хочу заменить div id="test_id" на упомянутую часть.

Вывод, который я получаю:

try {
Element.replace("test_id", "<input type=\"text\" id=\"user[user][contactinfo][city]\" name=\"user[user][contactinfo][city]\" value=\"\" placeholder=\"Yes it is working...\" style=\"width:244px; height:33px; border:0; color:#646464; background:url(/images/form_textfield_244.png) 0 5px no-repeat; padding:12px 5px 0 5px; margin:0 0 10px 0;\" />\n");
} catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.replace(\"test_id\", \"<input type=\\\"text\\\" id=\\\"user[user][contactinfo][city]\\\" name=\\\"user[user][contactinfo][city]\\\" value=\\\"\\\" placeholder=\\\"Yes it is working...\\\" style=\\\"width:244px; height:33px; border:0; color:#646464; background:url(/images/form_textfield_244.png) 0 5px no-repeat; padding:12px 5px 0 5px; margin:0 0 10px 0;\\\" />\\n\");'); throw e }

Это видно в браузере.Кто-нибудь может объяснить, где я иду не так?Ожидаемый результат: div должен быть заменен тем, что указано для замены.

1 Ответ

6 голосов
/ 22 марта 2011

Я советую вам больше не использовать RJS. Лучше сгенерировать JS-представление, если вы хотите, чтобы ваш javascript делал.

Например, если вы используете jQuery, вы можете добавить файл:

changes.js.erb

Внутри вы добавляете вам Javascript:

$('#test_id').html("<%= escape_javascript(render :partial => "input",:locals =>{ :type => 'text', :name => 'user[user][contactinfo][city]', :val => "", :size => '244', :placeholder_text => 'Yes it is working...'}) %>")

Теперь, если вы вызываете /proc/change.js, вы можете увидеть сгенерированный JS, как если бы вы сделали JS на своей странице.

...