class PeopleController

Controlador para el registro de usuarios de tipo Person

Public Instance Methods

create() click to toggle source
# 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
edit() click to toggle source
# File app/controllers/people_controller.rb, line 75
def edit    
end
intro() click to toggle source

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
new() click to toggle source
# 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
update() click to toggle source

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
validate_field() click to toggle source

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