0
如何在rails中使用respond_to
傳遞多個參數?當我有超過1個實例變量時,出現錯誤。但我有一個場景,當我必須通過多個參數(instance variables
)通過respond_to傳遞多個參數respond_to
如何在rails中使用respond_to
傳遞多個參數?當我有超過1個實例變量時,出現錯誤。但我有一個場景,當我必須通過多個參數(instance variables
)通過respond_to傳遞多個參數respond_to
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文件內的所有實例變量(以@爲前綴)。
我的問題與format.js。我的場景是這樣的,我必須從create action發送一個post對象,並且我還應該有一個新的comment對象來構建一個新的評論表單。因此,我需要新創建的發佈對象和新評論對象。 – Rahul
你能用一些示例代碼編輯你的答案嗎?我不確定你的意思。 – Tigraine