Итак, в моем коде Rails есть 2 формы подписки / отмены подписки. Которые похожи на это
<%= form_tag( {:controller => 'profile', :action => 'unfollow_topic' }) do %>
<%= hidden_field_tag :topic_id, @topic.id %>
<button class="question_button" type="submit">Unfollow</button>
<% end %>
и это:
<%= form_tag({:controller => 'profile', :action => 'follow_topic' }) do %>
<%= hidden_field_tag :topic_id, @topic.id %>
<button class="question_button" type="submit">Follow</button>
<% end %>
И тогда у меня есть этот код JavaScript:
<script type="text/javascript">
$(function(){
$('#follow form').submit(function(e) {
$.ajax({
url: this.action,
type: 'POST',
data: $(this).serialize(),
success: function(response){ $('#follow').html(response); }
});
return false;
});
});
</script>
Мой вопрос заключается в том, как я могу вернуть с моего контроллера соответствующую частичку «подписаться / отписаться», чтобы заменить ее возвращенным ответом.
Что у меня сейчас есть, так это, но, похоже, это не работает:
respond_to do |format|
format.html { redirect_to('/' + topic.type + '/' + topic.uri) }
format.js { render :partial => 'unfollow_topic' }
end
Но вместо этого, если визуализировать всю страницу, я думаю, что она на самом деле отвечает на format.html, а не на format.js, есть идеи?