[英]Ruby On Rails: pass params to link_to to call the create path
我正在编写一个报告模块,允许用户选择报告的日期并将相应的报告导出到Excel。 因此,我使用活动模型来存储日期。 在视图中,我有一个供用户下载报告的链接。 我希望它转到控制器中的创建操作,以便我可以获得具有正确日期的报告。
<%= render partial: 'reports/select_dates_form' %>
<p>
Download:
<%= link_to "Excel", reports_A_reports_path(:report, :end_date => @report.end_date, :start_date => @report.start_date), :method => :post, format: "xls" %>
</p>
在控制器中,我定义了一个create_param
方法来定义params。
def create_params
params.require(:reports_A_report).permit(:end_date, :start_date)
end
但是,它会出现错误“param丢失或值为空:reports_A_report”。 我尝试以各种方式通过params但仍然无法成功。
在标准REST方案中,索引操作和创建操作都具有相同的URL(/ reports),并且仅在使用GET访问索引并且使用POST访问create时不同。 所以link_to :action => :create
将生成一个指向/reports
的链接,这将导致浏览器在单击时执行/reports
的GET请求,从而调用索引操作。
要调用create动作,请使用link_to {:action => :create}, :method => :post
link_to
link_to {:action => :create}, :method => :post
,明确告诉link_to
您想要发布请求,或使用带有提交按钮而非链接的表单。
尝试
<%= link_to "Text_to_dispaly", :controller => "controller_name", :action => "action_name, :method => :post" %>
此外, method
是选择HTTP方法(GET,POST,...)。 这不是常规的方法。
一定要查看Rails 3中 的外部输入和路由下的Rails路由 ,它们都是很棒的资源。
我希望我的回答能帮到你..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.