确定使用polymorphic_url生成的路由的可行性

时间:2012-09-04 16:43:16

标签: ruby-on-rails ruby-on-rails-3.2

如果对象是可链接的,我有一个包含链接的通用部分。

使用polymorphic_url生成URL。如果polymorphic_url引发NoMethodError,那么我不包含该链接。

除非资源有更新或销毁操作但不是show动作,否则这种方法效果很好。在这种情况下,polymorphic_url会生成一个有效的URL,它只对GET无效。

有没有办法将polymorphic_url限制为特定的请求方法,或者确定返回的URL是否对GET有效的好方法?

2 个答案:

答案 0 :(得分:1)

我再次看了一下recogn_path,并让它发挥作用。

  begin
    url = polymorphic_url(...)
    # validate URL, since polymorphic URL may return a URL for a
    # different method
    Rails.application.routes.recognize_path(url, {:method => 'GET')
    url
  rescue NoMethodError => e  # raised if polymorphic_url fails
    nil
  rescue ActionController::RoutingError => e  # raised if recognize_path fails
    nil
  end

答案 1 :(得分:0)

这可能取决于您的设置,但是您无法找到有问题的控制器的路径,从而找出他是否知道节目动作?