Основное использование Jbuilder в контроллере - PullRequest
0 голосов
/ 08 января 2019

В приложении Rails (5.2) я пытаюсь использовать JBuilder для возврата некоторого JSON в качестве ответа.

Я добавил JBuilder в свой Gemfile.

# Gemfile
...
gem 'jbuilder', '~> 2.5'
...

# Gemfile.lock
...
jbuilder (2.8.0)
...

Согласно документации JBuilder:

Вы также можете извлекать атрибуты из массива напрямую.

@ people = People.all

json.array! @people,: id,: name

=> [{"id": 1, "name": "David"}, {"id": 2, "name": "Jamie"}]]

Теперь в моем контроллере я добавил следующее:

def index
  respond_to do |format|
    format.json { render json.array! User.all, :email, :full_name }
  end
end

Но я получаю

NameError - неопределенная локальная переменная или метод json для UsersController: 0x00007fe2f966f150 16:55:40 rails.1
| => Вы имели в виду? JSON:

Я что-то здесь упускаю?

1 Ответ

0 голосов
/ 08 января 2019

Обычно вы используете jbuilder в файле представления с расширением .json.jbuilder

в вашем контроллере:

def index 
  @users = User.all
  respond_to do |format|
    format.json 
  end
end 

в вашем app/views/users/index.json.jbuilder

json.array! @users, :email, :full_name

РЕДАКТИРОВАТЬ: вы также можете сделать это с контроллера:

format.json { render json: Jbuilder.new { |json| json.array! User.all, :email, :full_name  }.target! }
...