## ## Creamos la aplicación ## rails myapp cd myapp #Mostrar estructura de directorios #app/models #app/views #app/controllers ... #Configuración database.yml #Mostrar el proceso que sigue el MVC # Configuramos la conexión a la DB en config/database.yml rake db:create:all #Generamos el scaffold – modelo, vista, controlador, migrations,... # Modelo player ruby script/generate scaffold player name:string birthdate:date # Ejecutamos la migration – creamos la tabla rake db:migrate # Ejecutamos el servidor web - http://localhost:3000/players ruby script/server ## Definimos la ruta por defecto modificando la línea 36 de config/routes con lo siguient: map.root :controller => "players" ## Y borramos el índice - Sino lo borramos seguirá saliendo ignorando lo anterior. rm public/index.html ## Paramos el servidor y lo volvemos a arrancar, ahora podemos acceder a la dirección: ## http://Localhost:3000 - ya nos muestra la página por defecto, muestra el scaffold de players ## Añadimos las validaciones al modelo En el modelo Player ponemos validates_presence_of :name # ## Creamos el modelo score # script/generate model score player_id:integer distance:float invalid:boolean rake db:migrate # Validamos la distancia de score validates_presence_of :distance # Ponemos las relaciones al modelo score belongs_to :player # Ponemos las relaciones al modelo player has_many :scores # En la vista show de players añadimos

Scores

<% @player.scores.each do |score| %> <%= score.distance %> <%= '- Invalid' if score.invalid? %>
<% end %> <%= form_tag :action => "score", :id => @player %> <%= text_field "score", "distance" %>
<%= check_box "score", "invalid" %>
<%= submit_tag "Send" %> # En el controlador players añadimos: def score Player.find_by_id(params[:id]).scores.create(params[:score]) flash[:notice] = "Added your score" redirect_to :action => "show", :id => params[:id] end ## Paginación - plugin # script/plugin install git://github.com/mislav/will_paginate.git # Controlador player acción index: @players = Player.paginate :page => params[:page], :per_page => 5 # En la vista index(línea 20): <%= will_paginate @players %>