Ajax page.replace_html проблемы с частями в Rails - PullRequest
3 голосов
/ 23 апреля 2010

У меня проблема с довольно простым вызовом AJAX в рельсах. У меня есть приложение в стиле блога, и в каждом сообщении есть функция «Мне нравится». Я хочу иметь возможность увеличивать "лайк" для каждого поста в индексе, используя AJAX onclick. Я получил это на работу; однако, DOM здесь немного сложнее, потому что независимо от того, на какую часть он смотрит, он будет обновлять только частичку TOP. поэтому, если я нажму «нравится» в сообщении № 2, он обновит и заменит «нравится» в сообщении № 1.

Код для _post частичный:

<some code here...>

<div id="postcontent">
Posted <%= post.created_at.strftime("%A, %b %d")%> <br />
</div>

<div id="postlikes">
<%= link_to_remote 'Like', :url => {:controller => 'posts', :action => 'like_post', :id => post.id}%>
<%= post.like %>
</div>

код для _postlikes частичный:

<div id="postlikes">
<%= link_to_remote 'Like', :url => {:controller => 'posts', :action => 'like_post', :id => @post.id}%>
<%= @post.like %>
</div>
</div>

like_post.rjs код:

page.replace_html "postlikes", :partial => "postlikes", :object => @post
page.visual_effect :highlight, "postlikes", :duration => 3

Так что все это работает правильно для первого "постконтентного" div. Но это индекс сообщений, поэтому, если я захочу обновить второй div «postcontent» на странице, он все равно заменит HTML первого.

Я понимаю проблему, я просто не знаю, как ее исправить:)

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 23 апреля 2010

Измени свой

<div id="postlikes">

до

<div id="postlikes_<%= post.id %>">

А потом,

page.replace_html "postlikes_#{@post.id}", :partial => "postlikes", :object => @post
0 голосов
/ 23 апреля 2010

Это потому, что ваш Div ID одинаков для каждого частичного.Вам нужно сделать что-то вроде этого:

<div id="<%= dom_id(post) %>">

и

<div id="postlike_<%= dom_id(post) %>">

Я не слишком уверен, как вы настраиваете это, но вам нужно иметь уникальные идентификаторы для каждого поста(и, возможно, пост-лайки).

J

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...