Controlador para el registro de usuarios de tipo Person
# File app/controllers/people_controller.rb, line 55 def create @user = Person.new(params[:user]) @user.user_ip = request.remote_ip if @user.save session[:new_user] = nil cookies.delete :auth_token email = Notifier.create_activate_person_account(@user) begin logger.info("Sending account activation email to #{@user.email}") Notifier.deliver(email) rescue Net::SMTPServerBusy, Net::SMTPSyntaxError => err_type logger.info("There was an error sending activation email: " + err_type) flash[:error] = t('session.Error_servidor_correo') end flash[:tracking] = "/#{I18n.locale}/registered" else render :action => :new end end
# File app/controllers/people_controller.rb, line 75 def edit end
def index
@people = Person.approved.paginate :order => "people.created_at DESC", :page => params[:page], :per_page => 8 @title = t('people.unidas') @breadcrumbs_info = [[t('people.unidas'), people_path]]
end
def show
begin @person = Person.approved.find(params[:id]) rescue ActiveRecord::RecordNotFound flash[:notice] = t('people.not_found') redirect_to root_path and return end @title = "#{@person.public_name}" @title << ", #{t('people.de', :city => @person.public_city)}" if @person.public_city
end
# File app/controllers/people_controller.rb, line 42 def intro session[:return_to] = request.referer || root_path if request.xhr? render :template => 'people/intro_for_nav', :layout => false and return end end
# File app/controllers/people_controller.rb, line 49 def new @user = Person.new @title = t('people.registro_nuevo', :name => t('site_name')) render :layout => !request.xhr? end
Actualización de los datos personales
# File app/controllers/people_controller.rb, line 79 def update @person = Person.approved.find(current_user.id) if @person.update_attributes(params[:person]) redirect_to account_path else render :template => '/account/edit' end end
Esto debe moverse a otro controller porque usa prototype y en la parte publica solo jQuery “Live validation” de los campos de registro
# File app/controllers/people_controller.rb, line 90 def validate_field if params[:type].eql?('Person') user_attrs = ['email', 'password', 'password_confirmation', 'url', 'name', 'last_names'] elsif params[:type].eql?('Journalist') user_attrs = ['email', 'password', 'password_confirmation', 'media', 'url', 'name', 'last_names'] else user_attrs = ['email', 'password', 'password_confirmation', 'telephone', 'name', 'last_names'] end user_params = params.dup.delete_if {|k, v| !user_attrs.include?(k)} render :update do |page| if user_params.length > 0 u = params[:type].constantize.new(user_params) u.valid? user_params.each do |pk, pv| if u.errors.on(pk) page.select("#user_#{pk}_container span.error_message").each(&:remove) page.insert_html :after, "user_#{pk}", content_tag(:span, u.errors.on(pk).to_a.join(' y '), :class => 'error_message') else page.select("#user_#{pk}_container span.error_message").each(&:remove) end end end end end