response_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, где у вас есть скрипт.js.erb, вам не нужно ничего передавать вызову responseds_to, вместо этого вы можете использовать все переменные экземпляра (с префиксом @) внутри вашего файла js.erb, как вы это делаете в обычном представлении HTML с помощью <% =%>синтаксис.