在 Rails 6 中,如何使用路由参数作为控制器方法名称?

基思·贝内特

我有一个带有多个操作的报告控制器,每种报告一个。

我打算让他们走这样的路线:

/reports/:report_type

我希望将 report_type 字符串片段用作控制器名称,以便我可以有一个单一的路由来处理所有这些,如下所示:

  get 'reports/:rpt_type' => "reports#:rpt_type"

...这将解决这个问题,例如:

  get 'reports/song_performers' => 'reports#song_performers'

这是可能的,如果是,如何?

夜莺

是的。你可以在控制器中处理这个,而不是在 routes.rb 文件中:

# reports_controller.rb
def show
  send(params[:rpt_type])
end

private
def song_performers
  # do stuff
end

def other_type
  # do other stuff
end

# in routes.rb
get 'reports/:rpt_type', to: 'reports#show'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章