У меня есть система голосования, в которой я хотел бы, чтобы голосовая реакция была асинхронной.рельсы с ajax, reply_to confusion
на мой взгляд, 'шоу' Я ...
<%= render 'score' %>
, который оказывает
<% if @user.voted?(@lesson) %>
<%= render 'voted' %>
<% else %>
<%= render 'unvoted' %>
<% end %>
и в свою очередь, оказывает мой _voted.html.erb
#will display different images, colored or not based on selection
<% if @user.up_voted?(@lesson) %>
<div class = "up_arrow">
<%= link_to image_tag("up_color.png", alt: "Uncheck vote"),
clear_vote_lesson_url(@lesson), :method => :post, remote: true %>
</div>
<div class="average_score"><%= @lesson.votes %></div>
<div class= "down_arrow">
<%= link_to image_tag("down_uncolor.png", alt: "Vote down"),
down_vote_lesson_url(@lesson), :method => :post, remote: true %>
</div>
<!-- user down voted then -->
<% else %>
<div class = "up_arrow">
<%= link_to image_tag("up_uncolor.png", alt: "Vote up"),
up_vote_lesson_url(@lesson), :method => :post, remote: true %>
</div>
<div class="average_score"><%= @lesson.votes %></div>
<div class= "down_arrow">
<%= link_to image_tag("down_color.png", alt: "Uncheck vote"),
clear_vote_lesson_url(@lesson), :method => :post, remote: true %>
</div>
<% end %>
и мой unvoted.html.erb is
<div class = "up_arrow">
<%= link_to image_tag("up_uncolor.png", alt: "Vote up"),
up_vote_lesson_url(@lesson), :method => :post, remote: true %>
</div>
<div class="average_score"><%= @lesson.votes %></div>
<div class= "down_arrow">
<%= link_to image_tag("down_uncolor.png", alt: "Vote down"),
down_vote_lesson_url(@lesson), :method => :post, remote: true %>
</div>
, а затем, наконец, в мой контроллер у меня есть ..
def up_vote
lesson = Lesson.find(params[:id])
current_user.up_vote!(lesson)
respond_to do |format|
format.html { render :action => 'show'}
format.js { ???????? }
end
end
у меня есть еще несколько таких действий, как down_vote, но его очень похожи.
Я предполагаю, что я не уверен, что положить в мой блок format.js. ive попытался убрать такие вещи, как redirect_to lesson_path (урок), а также отобразить «оценку», но изображения голосования не обновляются.
Может кому-то помочь? благодаря!
UPDATE @ dhoelzgen
я изменил его ...
def up_vote
lesson = Lesson.find(params[:id])
current_user.up_vote!(lesson)
render :score, :layout => false
#redirect_to lesson_path(lesson)
end
я поставил рендер: счет,: макет => ложным в моих действиях, а также.
и на мой взгляд, у меня есть
<div id="surrounding_container">
<%= render 'score' %>
</div>
вместе с
$('.up_arrow')
.bind 'ajax:success', (event, data) ->
$('#surrounding_container').html($(data))
$('.down_arrow')
.bind 'ajax:success', (event, data) ->
$('#surrounding_container').html($(data))
в моем lessons.js.coffee.
Я что-то не хватает? изображения по-прежнему не изменяются асинхронно
hmmm я отредактировал снова в своем сообщении. это то, что вы имели в виду? – Sasha
Нет, это будет просто использовать рендер, без материала repond_. – dhoelzgen
Хммм, похоже, не меняется. я что-то пропустил? Я снова отредактировал свой пост. Я добавил down_arrow – Sasha