обновить каждый элемент заменить с частичным рельсы 3.1 - PullRequest
0 голосов
/ 28 января 2012

У меня есть 3 элемента и одна форма с кнопкой:

<input type="submit" value="Follow All" class="follow_all">

<div id="page"> 
<div id="page01" class="pages"> page 1 </div>
<div id="page02" class="pages"> page 2 </div>
<div id="page03" class="pages"> page 3 </div>
</div>

Когда я нажимаю кнопку «Отправить», действие формы вызывает файл create.js.erb .

В этом файле у меня есть:

var $divs = ("#page .pages");
$($divs).replaceWith("<%= escape_javascript(render(:partial => 'replace_all_divs'))%>");

В частичном _replace_all_divs.html.erb У меня есть:

<% @posts.each do |post| %>
<%= post.id   %>
<% end %>

Я хочу заменить каждый содержимое div (страница 1, страница 2 и страница 3) с идентификатор записи .

Проблема в том, что я получаю за каждый div 3 идентификатора post.id:

Я получаю плохой результат: (:

<div id="page"> 
<div id="page01" class="pages"> 123 </div>
<div id="page02" class="pages"> 123 </div>
<div id="page03" class="pages"> 123 </div>
</div>

Я хочу получить следующий результат:

<div id="page"> 
<div id="page01" class="pages"> 1 </div>
<div id="page02" class="pages"> 2 </div>
<div id="page03" class="pages"> 3 </div>
</div>

1 Ответ

3 голосов
/ 28 января 2012

Поскольку вы используете "#page .pages" в качестве селектора, метод replaceWith выполняется три раза, каждый с контентом, созданным _replace_all_divs.html.erb (цикл, объединяющий все вашиids => "123").

Вам лучше использовать "#page" в качестве селектора и заменить его content на новые div.

create.js.erb :

$('#page').empty().append('<%= render(:partial => 'replace_all_divs')%>');

_replace_all_divs.html.erb :

<% @posts.each do |post| %>
 <div id="page<%= post.id.to_s.rjust(2, '0') %>" class="pages"><%= post.id %></div>
<% end %>
...