Buenas, pues estaba arreglando un problema de la página web y me ha surgido un problema que no acabo de entender ya que soy bastante novato en este tema.
El problema es que la página me dice que el método está sin definir, pero sí que lo está. Os adjunto el código a ver si veis qué me pasa.
En esta línea da el error (undefined method 'url_name' for nil:NilClass
)
<a href="<%= valoration_url %>">
Ese link lo redirecciona a este método
def valoration_url url_for_page :valoration end
Que es donde me da el error al llamar al método url_for_page
def url_for_page(page, url_for_options = {}) page = Page.find_by_key(page.to_s) unless page.is_a?(Page) page_url_for_options = { :controller => 'pages', :action => 'show', :url => "#{page.url_name}/#{url_for_options.delete(:url)}", :key => nil # to overwrite current key in params } _page_url_options = page_url_for_options.merge(url_for_options) _page_url_options[:only_path] = true Rails.application.routes.url_for(_page_url_options) end
Respuestas
En realidad el problema no es que el método url_name
no esté definido, sino que el objeto page
es nil
. El problema sucede en esta línea de código:
page = Page.find_by_key(page.to_s) unless page.is_a?(Page)
La aplicación no es capaz de encontrar la página cuya clave es valoration
. Quizás no exista esa página o haya algún problema en el método find_by_key()
de la página.
@javiereguiluz
Gracias por tu respuesta, tenías razón. Al hacer un rake db:reset
se me había borrado la página de valoration
y no la encontraba.
@tangooShiny