2011-07-14 58 views
3

所以,我在Rails代碼中有2個關注/取消關注窗體。這是這樣的在Rails 3中渲染通過.ajax的靜態部分

<%= 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> 

我的問題是如何從我的控制器返回相應的「跟隨/ unfollow「部分用於替換返回的響應。

我現在擁有的是這一點,但它似乎並不工作:

respond_to do |format| 
    format.html { redirect_to('/' + topic.type + '/' + topic.uri) } 
    format.js { render :partial => 'unfollow_topic' } 
    end 

但是相反,如果使整個頁面,我相信它的實際響應format.html而不是格式。 js有什麼想法?

+0

什麼是你 '_unfollow_topic.js.erb' 文件?你試過剝離他們的一切,只是把一些警報的JavaScript? '警報(「你好!」);'這可能會告訴你,如果你甚至讓你的部分回來。 – ipd

+0

ajax請求通常用於更新頁面的一部分正如我從你的問題所理解的,你想用ajax請求更新整個頁面它是正確的嗎? – Bohdan

+0

也請發佈您的日誌與此請求的大塊 – Bohdan

回答

5

的JavaScript:

<script type="text/javascript"> 
     $(function(){ 
     $('#follow form').submit(function(e) { 
      $.ajax({ 
      url: this.action, 
      type: 'POST', 
      data: $(this).serialize(), 
      dataType: 'html' 
      success: function(response){ $('#follow').html(response); } 
      }); 
     return false; 
     }); 
     }); 
    </script> 

控制器:

respond_to do |format| 
    format.html do 
     if request.xhr? 
     render :partial => 'unfollow_topic' 
     else 
     redirect_to('/' + topic.type + '/' + topic.uri) 
     end 
    end 
end 
+0

爲我工作,謝謝=) –

+0

thx喬尼爲我工作:) –