Я новичок в рельсах, и я просто быстрый вопрос ...рубин на рельсах, результаты поиска в массиве JSon (JBuilder)
У меня есть календарь драгоценный камень, который в настоящее время извлекает данные о событиях из JSON в качестве такового (просмотры/index.json.jbuilder)
json.array!(@viewings) do |viewing|
json.extract! viewing, :id, :room_id, :user_id, :start_time, :end_time, :notes
json.title viewing.user.name
json.start viewing.start_time
json.end viewing.end_time
json.url viewing_url(viewing, format: :html)
end
во всяком случае, я создал функцию поиска на моей «просмотрах» индексной странице, когда пользователь выбирает номер из выпадающего списка и отображает соответствующие просмотры.
Однако мне нужно сделать массив JSON из результатов поиска, чтобы его можно было подавать в календарь.
Я знаю, что я могу добиться этого, делая что-то вроде, что делает работу:
@viewings = Viewing.where(room_id: 1)
, но очевидно, что я хочу передать переменную в этой линии кода, что-то вроде
@viewings = Viewing.where(room_id: params[:search_string])
Строка поиска всегда будет идентификатором комнаты, но приведенный выше код (и любые варианты, о которых я могу думать), похоже, не работает.
ИЛИ могу я сделать массив JSON из моего вывода поиска. мой поиск - это так ...
def search
@rooms = Room.all
@viewings = Viewing.simple_search(params[:search_string])
render :action => "index"
end
Может кто-нибудь помочь ?!
EDIT:
Я все еще борется с этим много. Я посмотрел на страницу jquery внизу, но все еще не делал то, что я надеялся.
Я упростил функцию в моем контроллере просмотров, как так:
def rmselect
@query1 = params[:rmno]
@rooms = Room.all
@viewings=Room.find(params[:rmno]).viewings
render :action => "index"
end
И я создал _rmselect.json.jbuilder, как так:
@viewings = Viewing.where(room_id: @query1)
json.array!(@viewings) do |viewing|
json.title viewing.user.name
json.start viewing.start_time
json.end viewing.end_time
end
Я надеялся, @query1
переменных будут быть переданным на страницу jbuilder, которая заставит его отображать только просмотры для выбранной комнаты. Однако, похоже, что jbuilder не может видеть никаких переменных, если они не находятся в def index
(где это не хорошо).
Я также не могу понять, почему _rmselect.json.jbuilder
принимает @viewings.all
от def index
, а затем @viewings=Room.find(params[:rmno]).viewings
от def rmselect
.
Привет, спасибо, что нашли время ответить. К сожалению, ваша ссылка, кажется, мертва, и я не знаю, как это сделать. – Mitch
Я полагаю, кто params [: search_string] является массивом идентификаторов и выглядит так: [1,2,3]. Если я предполагаю, что метод find вернет массив объектов. – GeekRiky
Если search_string - строка массива Json, вы можете использовать эту [библиотеку] (http://flori.github.io/json/) для строки синтаксического анализа, а затем использовать find. – GeekRiky