Começando em Ruby

Uma duvida: ficar passando as variáveis nas funções por parâmetro ou utilizar o @ e colocas direto na função?

Por exemplo

@nome

Você poderia ser mais específico para eu poder te ajudar melhor. Respondendo sua pergunta depende de situação para situação, o @ é variavel de instância usado com classes, caso tenha por exemplo uma classe pessoa você poderia deixar o @nome na classe e utilizar isso dentro dos seus métodos. Por exemplo:

class Pessoa
  def initialize(nome)
    @nome = nome
  end

  def meu_nome
    puts "Meu nome é #{@nome}"
  end
end

Com isso você pode reutilizar, conceito DRY o @nome para outros métodos. Agora temos o segundo caso, quando você precisa de algo dinâmico por exemplo:

def print_mensagem(mensagem)
  puts mensagem
end

print_mensagem("Algum coisa")

Atributos é aquilo que minha classe contém no caso de pessoa (nome, idade, rg, etc), parâmetros são dados mais dinâmicos que se alteram a todo momento dependendo do caso ou dados que não fazem parte da minha entidade, mas servem para o bom funcionamento da minha ação [método]. Caso sua dúvida não foi essa ou ainda não entendeu pode me procurar que tento esclarecer melhor.