Подтвердить что ты не робот

Как получить URL-адрес объекта в контроллере

У меня есть модель Product.

Как получить URL-адрес продукта в Rails 3 в контроллере.

Например (псевдокод):

def foobar
  @product = Product.first
  puts @product.url
end

Возможно ли это?

4b9b3361

Ответ 1

Предполагая, что модель Product отображается как: ресурсы в вашем файле routes.rb:

def foobar
  @product = Product.first
  url = product_url(@product)
end

Ответ 2

В дополнение к названному маршруту 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.