2011-12-05 146 views
0

如何在rails中使用respond_to傳遞多個參數?當我有超過1個實例變量時,出現錯誤。但我有一個場景,當我必須通過多個參數(instance variables)通過respond_to傳遞多個參數respond_to

回答

1

respond_to實際上應該只返回一個單數的事情。 HTML模板渲染器也只返回一件事 - 但將多個實例變量嵌入到它的HTML中。

所以你基本上必須爲Json和XML做同樣的事情:構造一個包含所有數據的單個對象。

一個例子是這樣的代碼:

def show 
    @post = Post.first 
    @users = Users.where(:active => true) 
    respond_to do |format| 
    format.html #this will simply render the view 
    format.json { render :json => { :post => @post, :users => @users } } 
    end 
end 

一旦你想通過這些Json的多個值,你必須定義一個包含要返回什麼奇異的JSON對象輸出。

在我的示例中,這是一個Json對象,它包含帖子和用戶 - 因此給調用者提供了與提供HTML視圖相同的信息。

生成的JSON看起來是這樣的:

{ 
    post: {..}, 
    users: [..] 
} 

更新

如果您正在使用此呈現JavaScript,你有一個script.js.erb你不必通過任何到responds_to的調用,而是可以像使用<%=%>語法那樣在普通HTML視圖中使用js.erb文件內的所有實例變量(以@爲前綴)。

+0

我的問題與format.js。我的場景是這樣的,我必須從create action發送一個post對象,並且我還應該有一個新的comment對象來構建一個新的評論表單。因此,我需要新創建的發佈對象和新評論對象。 – Rahul

+0

你能用一些示例代碼編輯你的答案嗎?我不確定你的意思。 – Tigraine