У меня есть @posts, которые принадлежат пользователю. Я пытаюсь отображать @posts, но также добавлять имя и город пользователям. Я думал, что это можно было бы сделать что-то вродеЛучший способ объединить объекты ActiveRecords?
respond_to do |format|
format.json {
@post_arr = Array.new
@posts.each do |post|
@post_arr[post.id] = post + post.user.name + post.user.city
end
render json: @post_arr
}
end
Я получаю неопределенный метод `+» для #
Я также попытался создать виртуальные атрибуты в пост-модели и назначить его в качестве такого post.author = post.user.name post.author_city = post.user.city , но это только показывает user_id в формате JSON (который является внешним ключом)
Я стараюсь слиться как хорошо, но это не работает. Что бы правильный способ сделать это в рельсах
EDIT: Я получил его на работу с
format.json {
@post_arr = Array.new
@posts.each do |post|
@post_arr << post.as_json.merge!({:author_name => post.user.name, :author_city => post.user.city})
end
render json: @post_arr
}
end
ча n вы объясните, где вы получили json.user в файле jbuilder – CodeCrack
Хотя это неправильный ответ ..., базовый формат jbuilder - это 'json.key value'. 'key' является ключом json (например: id, name, user, ...), и вы можете решить, что хотите. 'value' - значение json (ex: 1, 2, post1, post2, ..), и вы задаете значение объекта ActiveRecord. Просьба проверить https://github.com/rails/jbuilder, если вы хотите узнать больше о 'jbuilder'. – shoji