Как получить URL объекта в контроллере - PullRequest
19 голосов
/ 06 мая 2011

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

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

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

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

Возможна ли такая вещь?

Ответы [ 2 ]

31 голосов
/ 06 мая 2011

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

def foobar
  @product = Product.first
  url = product_url(@product)
end
19 голосов
/ 06 мая 2011

В дополнение к названному маршруту product_url(@product) вы можете использовать общие url_for(@product) ( документы ). Это имеет побочный эффект: если у вас есть вложенные или пространственные маршруты, он будет короче:

customer_product_url(@customer, @product)
url_for([@customer, @product])

Также обратите внимание, что по умолчанию url_for создает относительных URL-адресов, как и product_path, что в зависимости от ваших потребностей может быть хорошим или плохим. Чтобы получить полный URL, передайте :only_path => false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...