Я новичок в рельсах, и у меня есть быстрый вопрос...
У меня есть гем календаря, который в настоящее время извлекает данные о событиях из json как такового (viewings/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
Кто-нибудь может помочь?!
РЕДАКТИРОВАТЬ:
Я все еще много борюсь с этим. Я просмотрел страницу 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
.