【发布时间】:2015-04-20 04:09:02
【问题描述】:
我是 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
无论如何,我在“观看次数”索引页面上创建了一个搜索功能,用户从下拉列表中选择房间并显示相应的观看次数。
但是,我需要从搜索结果中创建一个 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。
【问题讨论】:
标签: ruby json ruby-on-rails-4 jbuilder