如何将参数传递给另一个控制器并在ruby中打开新页面

时间:2015-01-12 02:48:46

标签: ruby-on-rails

在我的项目信息页面中,我需要根据用户选择的项目编号和日期生成报告。 如何从项目信息视图(noisedevice/report.html.erb)打开报告页面(例如来自project/report.html.erb)?

我觉得需要将参数从视图页面传递到另一个控制器(noisedevice的控制器)然后调用一些函数(或路由器??)来为noisedevices的报告生成一个新的报告页面。 怎么办?在处理之前我需要知道什么知识?

谢谢。

2 个答案:

答案 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有关传递本地参数的详细信息。

该指南的整个页面值得一试。