ruby on rails,搜索结果到 json 数组 (jbuilder)
ruby on rails, search results to json array (jbuilder)
我是 rails 的新手,我有一个简单的问题...
我有一个日历 gem 当前从 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
无论如何,我在我的 "viewings" 索引页面上创建了一个搜索功能,用户可以从下拉列表中选择房间并显示相应的观看次数。
但是,我需要根据搜索结果创建一个 JSON 数组,以便可以将其提供给日历。
我知道我可以通过做类似的事情来实现这一点,这确实有效:
@viewings = Viewing.where(room_id: 1 )
但显然我想将一个变量传递给那行代码,比如
@viewings = Viewing.where(room_id: params[:search_string] )
搜索字符串始终是房间 ID,但上面的代码(以及我能想到的任何变体)似乎不起作用。
或者我可以从我的搜索输出中创建一个 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
从 def index
中获取 @viewings.all
,而不是从 def rmselect
中获取 @viewings=Room.find(params[:rmno]).viewings
。
好的,我想情况是这样的:
查看模型:
class Viewing < ActiveRecord::Base
...
belongs_to :room
...
end
房间模型:
class Room < ActiveRecord::Base
...
has_many :viewings
...
end
通过房间id检索观看次数,您可以这样做:
@viewings=Room.find(params[:search_string]).viewings
为了创建 JSON 结果数组,呈现包含类似内容的 jbuilder 视图:
# @people = People.all
json.array! @people, :id, :name
# => [ { "id": 1, "name": "David" }, { "id": 2, "name": "Jamie" } ]
我报告了一个官方 jbuilder 的例子docs我认为你可以使用 json.array 观看:
json.array! @viewings, field1, field2, ...
否则你可以在你的控制器中使用这个:
render json: @viewings
但如果您使用过 jbuilder,我认为您最好继续使用。
我是 rails 的新手,我有一个简单的问题...
我有一个日历 gem 当前从 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
无论如何,我在我的 "viewings" 索引页面上创建了一个搜索功能,用户可以从下拉列表中选择房间并显示相应的观看次数。
但是,我需要根据搜索结果创建一个 JSON 数组,以便可以将其提供给日历。
我知道我可以通过做类似的事情来实现这一点,这确实有效:
@viewings = Viewing.where(room_id: 1 )
但显然我想将一个变量传递给那行代码,比如
@viewings = Viewing.where(room_id: params[:search_string] )
搜索字符串始终是房间 ID,但上面的代码(以及我能想到的任何变体)似乎不起作用。
或者我可以从我的搜索输出中创建一个 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
从 def index
中获取 @viewings.all
,而不是从 def rmselect
中获取 @viewings=Room.find(params[:rmno]).viewings
。
好的,我想情况是这样的:
查看模型:
class Viewing < ActiveRecord::Base
...
belongs_to :room
...
end
房间模型:
class Room < ActiveRecord::Base
...
has_many :viewings
...
end
通过房间id检索观看次数,您可以这样做:
@viewings=Room.find(params[:search_string]).viewings
为了创建 JSON 结果数组,呈现包含类似内容的 jbuilder 视图:
# @people = People.all
json.array! @people, :id, :name
# => [ { "id": 1, "name": "David" }, { "id": 2, "name": "Jamie" } ]
我报告了一个官方 jbuilder 的例子docs我认为你可以使用 json.array 观看:
json.array! @viewings, field1, field2, ...
否则你可以在你的控制器中使用这个:
render json: @viewings
但如果您使用过 jbuilder,我认为您最好继续使用。