2010-04-23 2 views
3

У меня возникла проблема с довольно простым вызовом AJAX в рельсах. У меня есть приложение в стиле блога, и у каждого сообщения есть функция «как». Я хочу иметь возможность увеличивать «как» на каждом столбце индекса, используя AJAX onclick. Я получил его на работу; тем не менее, DOM здесь немного сложнее, потому что независимо от того, на каком частичном изображении он смотрит, он будет обновлять только часть TOP. поэтому, если я нажму «like» в post # 2, он обновит и заменит «like» на post # 1 вместо этого.Ajax page.replace_html проблемы с частичными в Rails

Код для _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 

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

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

Спасибо заранее!

+0

Почему у вас есть сообщение, понравившееся в _post partial И сообщение нравится частично? –

ответ

1

Изменить ваш

<div id="postlikes"> 

в

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

А потом,

page.replace_html "postlikes_#{@post.id}", :partial => "postlikes", :object => @post 
0

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

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

и

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

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

J

Смежные вопросы