我正在尝试创建一个自定义控制器操作(类似“报告”),我可以用它来获取某些图表的JSON数据。鉴于数据的核心在我所称的Table1
控制器中,这就是我放置方法的地方。 (我也尝试将它移动到Table2
控制器,并创建一个全新的Report
控制器,所有不良结果。)我遇到的问题是让它呈现JSON。为简化起见,我将方法简化为以下内容:
def report
@table1 = Table1.all
respond_to do |format|
format.json { render json: @table1}
end
end
导航到/report
或/report.json
会抱怨The action 'report' could not be found for Table1Controller
。只需创建文件app/views/table1/report.html.erb
就足以让该消息为前者消失。至于后者,它现在抱怨没有模板。有趣的是,我可以在同一目录中创建一个report.json.erb
文件,错误将会发生,但没有JSON数据。
更有趣的是,我在不同的控制器中做了同样的事情并且工作正常。 = /
以上只是我的问题的第一部分。我有几个相关的表,并希望提取需要多个连接的特定信息。我可以编写查询,但我似乎无法让Rails在任何一点上与我合作。我认为有一种“Rails”方式可以做到这一点,我只是没有这样做,这也是我遇到困难的原因。以下是查询:
select
table4.name as "Collection",
count(table4.name) as "Totals"
from
table1
left join
table2 on table1.table2_id = table2.id
left join
table3 on table1.table3_id = table3.id
left join
table4 on table3.table4_id = table4.id
left join
table5 on table1.table5_id = table5.id
group by table4.name
order by "Totals" desc
我尝试添加几种路线排列。我还尝试添加一个成员路由如下:
resources :table1 do
member do
get 'report'
end
end
结果路线为/table1/:id/report(.:format)
。这至少声称它无法找到“报告”行动。所有其他人只是抱怨“表演”行动。
答案 0 :(得分:0)
我不知道为什么,但我能够通过将所有内容移动到另一个控制器来实现这一点。 /耸肩。