我有一个Product
型号。
如何在控制器中获取Rails 3中产品的URL。
例如(伪代码):
def foobar
@product = Product.first
puts @product.url
end
这样的事情可能吗?
答案 0 :(得分:30)
假设Product
模型映射为:routes.rb
文件中的资源:
def foobar
@product = Product.first
url = product_url(@product)
end
答案 1 :(得分:19)
除了命名路线product_url(@product)
,您还可以使用常规url_for(@product)
(docs)。这有副作用,如果你有嵌套或命名空间的路由,它会更短:
customer_product_url(@customer, @product)
url_for([@customer, @product])
另请注意,默认情况下url_for
会生成相对网址,就像product_path
一样,这取决于您的需求可能是好还是坏。要获取完整的网址,请传递:only_path => false
。