在我的项目信息页面中,我需要根据用户选择的项目编号和日期生成报告。
如何从项目信息视图(noisedevice/report.html.erb
)打开报告页面(例如来自project/report.html.erb
)?
我觉得需要将参数从视图页面传递到另一个控制器(noisedevice的控制器)然后调用一些函数(或路由器??)来为noisedevices的报告生成一个新的报告页面。 怎么办?在处理之前我需要知道什么知识?
谢谢。
答案 0 :(得分:2)
您可以通过以下链接传递参数:
<%= link_to new_noisedevice_path({ report_id: @report.id, date: @date })
这将生成一个get请求,其参数附加到URL,如下所示:
http://localhost:3000/noisedevices/new?report_id=5&date=xxx
然后您可以像这样获取参数:
@report = Report.find(params[:report_id])
@date = params[:date]
答案 1 :(得分:1)
从project/report.html.erb
开始,可以使用render方法调用noisedevice/_report.html.erb
视图,如下所示:
<%= render "noisedevice/report", locals: { some_date: some_date, project_id: project_id } %>
有关调用另一个控制器的视图的更多详细信息,请参阅RailsGuides上的2.2.3 Rendering an Action's Template from Another Controller。
和3.4.4 Passing Local Variables有关传递本地参数的详细信息。
该指南的整个页面值得一试。