Una de las cosas que se puede hacer fácilmente en RoR es disponer de url amigables, de manera que el visitante puede situarse mejor, y lo más importante, mejorar considerablemente el posicionamiento en los buscadoreses.
Lo primero es crear un método llamado permalink que nos cambie los carácteres no válidos para una url por otros que si lo sean.
(más…)
Es importante que revisemos este archivo para ver que está haciendo exactamente nuestra aplicación. Os pondré un ejemplo. En Rails las consultas SQL no las generamos nosotros (generalmente) y podría ser que estuvieramos haciendo una búsqueda entre demasidos registros que hiciera que nuestra aplicación no rindiese lo esperado. En el arvhivo log/development.log se escriben las consultas que la aplicación hace.
Una buena solución es abrir una consola y ejecutar tail -f log/development.log, de esta manera aparecerá el contenido del archivo por pantalla y podremos comprobar que está pasado.
Hoy he tenido que hacer una cosa que hasta ahora no habia hecho antes y creo que puede ser interesante para alguna aplicaciones por ejemplo una cesta de la compra.
Supongamos que tenemos una tabla de Articulos y otra de Colores y las tenemos que relacionar, donde un artÃculos puede tener varios colores.
Creamos una tabla llamada Relaciones y su scaffold. En el modelo definiremos las relaciones con las otras tablas de la siguiente manera
class Relation < ActiveRecord::Base
belongs_to :articles
belongs_to :colours
end
Bien, ahora modificamos el _form.rhtml de Relaciones y lo dejamos de la siguiente manera:
<p><label for=”relation_article_id”>Article</label><br/>
<%= select ‘relation’, ‘article_id’, Article.find_all.collect {|a| [ a.name, a.id ] } %>
</p>
<p>
<label for=”relation_colour_id”>Colors</label><br/>
<% @colours = Colour.find(:all) %>
<% @colours.each do |colour| %>
<%= check_box_tag “colours_list[]”, colour.id %>
<b><%= colour.name%></b> <% end %>
</p>
Lo que estamo haciendo es un select con todos los artÃculos y a continuación creamos una lista de colores con un checkbox al lado. El array colours_list[] almacenará todos los Ãndices (id’s) de los colores que hayamos marcado, tendremos un array parecido a este: colours_list[ ” 3″ => “1″, “7″ => “1″, 19 => “1″].
El método create del controlador quedará como sigue:
def create
@colours = params[:colours_list]
@colours.each do |colour|
@relation = Relation.new(params[:relation])
@relation.colour_id = colour
if @relation.save
else
flash[:notice] = ‘Error: la relación no se ha podido crear.’
redirect_to :action => ‘list’
end
end
flash[:notice] = ‘La relación se ha creado correctamente.’
redirect_to :action => ‘list’
end
En algunas ocasiones los paquetes de RMagick instalados con apt provocan algún problema. Los eliminé e intente instalar RMagick con gems, pero la instalación me de daba el siguiente error:
ERROR: Failed to build gem native extension.
Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/rmagick-1.14.0 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/rmagick-1.14.0/gem_make.out
Para poder instalar RMagick mediante gems, eliminamos los paquetes instalados de RMagick mediante apt e instalamos los paquetes libmagick6-dev ruby1.8-dev:
sudo apt-get remove –purge librmagick-ruby-doc librmagick-ruby1.8
sudo apt-get install libmagick6-dev ruby1.8-dev
A continuación ya podemos instalar RMagick:
sudo gem install rmagick
Para integrar el editor FCKEditor, he seguido los pasos que se explican en esta página. Primero tenemos que descargar el editor de la página oficial y copiar los siguientes ficheros en la carpeta ‘public/javascripts’ de nuestra aplicación.
/editor/
fckconfig.js
fckeditor.js
fckstyles.xml
fcktemplates.xml
Ahora editamos el fichero ‘public/javascripts/fckeditor.js’ y modificamos la línea:

Editamos el fichero ‘app/helpers/application_helper.rb’ y añadimos:
module ApplicationHelper
def fckeditor_text_field(object, method, options = {})
text_area(object, method, options ) + javascript_tag( “var oFCKeditor = new FCKeditor(’” + object + “_” + method + “‘);oFCKeditor.ReplaceTextarea()” )
end
end
También añadimos en el del ‘layout’ que estamos utilizando, la siguiente línea:
<%= javascript_include_tag “fckeditor” %>
Y por último editamos los ficheros ‘_form.rhtml’ donde queremos insertar el FCKeditor y cambiamos el text_area por:
<%= fckeditor_text_field ‘controlador’, ‘descipcion’ %>