Posts Tagged ‘Tips’

template_exists? deprecated en Rails 2.3

Domingo, Abril 5th, 2009

No sé ahora mismo de donde saqué este snippet para volver a disponer de esta pequeña funcionalidad: conocer si existe una vista. La he vuelto a recuperar de un proyecto y dado que mi blog en mi poco extenso blog es más facil de encontrar, me lo apunto por aquí:

  # Define template_exists? for Rails 2.3 (cause it's deprecated)
  unless ActionController::Base.private_instance_methods.include? 'template_exists?'
    def template_exists?(path)
      self.view_paths.find_template(path, response.template.template_format)
    rescue ActionView::MissingTemplate
      false
    end
  end

Poco rato después…

Googleando un poco he dado con la fuente: Drachenkind. Thx!

Rails: Páginas estáticas

Sábado, Abril 12th, 2008

Hace no mucho llegaría a vuestros feeds el consejo de Josh Susser sobre como hacer sencillo lo que normalmente nos tiene un rato dubitativos. ¿Donde meter/asociar las dichosas páginas estáticas?

Pese a que la solución de Josh es elegante, di con otra que me pareció bastante más dinámica y que con pequeños ajustes, se convierte, de manera oficial y por vía de apremio, en la solución de aquí en adelante.

Tan sencillo como crearte el controlador Pages..

rails ruby
Copialo

.. y añadir lo siguiente al routes.rb

map.page '/page/:name', :controller => 'pages', :action => 'show', :name => nil

Luego podrás añadir tantos páginas como quieras a la carpeta app/views/pages y enlazarlas es tan sencillo como..

# Con el fichero ayuda.html.erb en app/views/pages
link_to "Ayuda", page_path('ayuda')

Metodos más “legibles” con NOT

Lunes, Octubre 8th, 2007

Esta mañana, poniendome al día con la blogesfera, dí con este pequeño y genial hack para hacer nuestros metodos algo más semanticos:

class Object
  define_method :not do
    Not.new(self)
  end

  class Not
    private *instance_methods.select { |m| m !~ /(^__|^\W|^binding$)/ }

    def initialize(subject)
      @subject = subject
    end

    def method_missing(sym, *args, &blk)
      !@subject.send(sym,*args,&blk)
    end
  end
end

Y bueno, los ejemplos más sencillos no pueden ser:

  usuario.not.visible?
  usuario.not.admin?

Me encanta ^_^!

Fuente: http://blog.jayfields.com/2007/08/ruby-adding-not-method-for-readability.html