2011-10-21 22 views
3

我一直在閱讀有關respond_with。並在之前的幾個教程中使用它,但不真的認爲我完全理解它。如何使用Rails的respond_with創建操作和JavaScript?

我想現在要實現的功能是這樣的:我有類文章的項目清單,以及他們每個人都有一個鏈接,創建最喜愛的動作。當用戶點擊它時,會創建最喜歡的實例並將用戶重定向到主頁。我想這與AJAX工作,而無需刷新頁面,並執行一些JavaScript的商品項目,以讓用戶知道它已經成功地收藏最多。我使用的:遠程=>真正在相關鏈接屬性,所以動作沒有問題遠程執行,但我被困在如何執行該操作的.js.erb文件位。

我已經做在控制器中的以下內容:

class FavouritesController < ApplicationController 
before_filter :authenticate 
respond_to :html, :js 


    def create 
    @article = Article.find_by_id(params[:article_id]) 
    current_user.Favourites.create(:article => @article) 
    redirect_to root_path 
    end 

的問題是,我不知道我應該通過什麼參數respond_with。我試過用respond_with @article和respond_with無參數來替換重定向,並且當它們都工作時(create.js.erb被調用),我不明白爲什麼...

我不想'respond_with'任何東西,但只有當通過javascript執行動作時,create.js.erb纔會被調用。任何人都可以解釋一下a)爲什麼不管我傳遞給它什麼都響應,b)什麼是正確的方式來做到這一點?

順便說一句,我使用Rails 3.0

編輯:我的理解更好,如果我在下面的代碼中使用的respond_to喜歡,但我想了解respond_with更好。

respond_to do |format| 
    format.html { redirect_to root_path } 
    format.js 
end 

回答

-1

嗨,奧洛穿過下面的鏈接,它簡潔地解釋了respond_with和respond_to。它列出了可以傳遞給respond_with

http://ryandaigle.com/articles/2009/8/6/what-s-new-in-edge-rails-cleaner-restful-controllers-w-respond_with

希望這回答了你的查詢

+0

其實,這博客帖子是一個我看過只是要求在此之前。雖然這是非常好,幫助我不懂的題目更好,它不幫我這個特定問題 –

+0

始終提供downvote有原因的,它可以幫助 – Ross

0

我碰到這個問題,跑了好幾次試圖解決一個類似的問題的所有選項。事實證明,我的控制器沒有推斷格式,我以爲它從內容類型或一個事實,即它是一個XHR請求將。

在任何情況下,它的工作時,我從這個切換:

contacts_path 

要這樣:

contacts_path format: :json 

我不在乎對於本身,所以我改變了我的Ajax調用包括像這樣具體的數據類型選項(每jQuery ajax documentation):

$.ajax({url: contactUrl, type: 'POST', data: data, dataType: 'json' }); 
相關問題