Передача нескольких параметров с response_to - PullRequest
0 голосов
/ 05 декабря 2011

Как передать несколько параметров, используя respond_to в рельсах? Когда у меня более 1 переменной экземпляра, я получаю сообщение об ошибке. Но у меня есть сценарий, когда мне нужно передать несколько параметров (instance variables) через response_to

1 Ответ

1 голос
/ 05 декабря 2011

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 с помощью <% =%>синтаксис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...