Rails获取控制器动作URL

时间:2017-11-21 07:15:34

标签: ruby-on-rails ruby

我有一个动作,我在routes.rb

中定义了它
resources :statistics, only: [] do
  get 'group_report/:id', to: 'statistics#group_report', as: 'group_report'
end

然后在模型中的方法中,我想返回完整的URL。

因此,我写了这个方法

root_url + group_report_statistics_path(id)

结果为"http://localhost:3000//statistics/group_report/DHo6qzUzYXw"

我认为这是一种肮脏的方式,我也需要处理双斜杠。

Rails是否提供了一些有用的方法,我可以直接获取操作的完整URL?

3 个答案:

答案 0 :(得分:2)

使用group_report_statistics_url(id)

_path帮助程序提供站点根目录相对路径。你应该在大部分时间都使用它。

_url帮助程序提供绝对路径,包括协议和服务器名称。我发现在创建服务器上的应用程序链接时,我主要在电子邮件中使用这些内容。它们应主要在提供外部链接时使用。

答案 1 :(得分:1)

Rails为所有路由提供路径和url助手。

因此,如果您使用group_report_statistics_url(id),则会获得完整的网址。

答案 2 :(得分:0)

试试这个

File.join(root_url + group_report_statistics_path(id))

 group_report_statistics_url(id)