Ответ 1
Предполагая, что модель Product
отображается как: ресурсы в вашем файле routes.rb
:
def foobar
@product = Product.first
url = product_url(@product)
end
У меня есть модель Product
.
Как получить URL-адрес продукта в Rails 3 в контроллере.
Например (псевдокод):
def foobar
@product = Product.first
puts @product.url
end
Возможно ли это?
Предполагая, что модель Product
отображается как: ресурсы в вашем файле routes.rb
:
def foobar
@product = Product.first
url = product_url(@product)
end
В дополнение к названному маршруту product_url(@product)
вы можете использовать общий url_for(@product)
(docs). Это имеет побочный эффект: если у вас есть вложенные или пропущенные маршруты, это короче:
customer_product_url(@customer, @product)
url_for([@customer, @product])
Также обратите внимание, что по умолчанию url_for
создает относительные URL-адреса, так же, как product_path
, что в зависимости от ваших потребностей может быть хорошим или плохим. Чтобы получить полный URL-адрес, пройдите :only_path => false
.