tutorial software rails ejemplos descargar curso caracteristicas aprender ruby-on-rails

ruby-on-rails - ejemplos - ruby on rails software



URL completa con url_for en Rails (5)

¿Cómo puedo obtener una url completa en los carriles?

url_for @book solo devuelve una ruta como / book / 1 y no www.domain.com/book/1

Gracias (y disculpe si la respuesta es obvia. ¡Estoy aprendiendo rieles!)


En Rails 4, url_for solo toma un argumento , por lo que debe pasar una matriz con un hash explícito dentro de la opción only_path .

Bueno:

url_for([@post, @comment, {only_path: true}])

Malo:

url_for(@post, @comment, {only_path: true}) url_for([@post, @comment], {only_path: true})

Desde la fuente, url_for con una entrada de Array solo llama:

polymorphic_url([@post, @comment], {only_path: true})

como se muestra en la respuesta de @ moose.

Como señala @lime, only_path generalmente no es necesario para polymorphic_url ya que se distingue con los sufijos _url _path .


Parece que esto funcionaría:

url_for(@book)

Pero no lo hace. El método url_for solo acepta un argumento, que puede ser una cadena, una instancia de un modelo o un hash de opciones. Esto es bastante desafortunado, ya que parece que es posible que deba vincularse a @book y agregar opciones como: only_path o: host también.

Una forma de evitarlo es utilizar polymorphic_url, que generaría la url absoluta correcta aunque su modelo (probablemente) no sea realmente polimórfico:

polymorphic_url(@book, :host => "domain.com")

Quizás la mejor ruta sería utilizar una ruta con nombre, que se configura automáticamente cuando declara recursos en sus rutas o usa la opción: como:

# in routes.rb: resources :books # or get "books/:id" => "books#show", as: :book # in your view: book_path(@book, :host => "domain.com")


Según los documentos , esto no debería suceder. La opción que está buscando es :only_path y es falsa de forma predeterminada. ¿Qué pasa si lo configuras en falso explícitamente?

url_for(@book, :only_path => false)

Si bien puedes usar url_for , deberías preferir el método de Ryan cuando puedes: book_url(@book) para una url completa o book_path(@book) para la ruta.


Si es un recurso RESTful, podrás usar esto:

book_url(@book)


Utilice la opción: host. Por ejemplo, puedes usar:

url_for(@book, :host => "domain.com")