Rails como alterar a exibição dependente da variável de instância?

Eu tenho esta ação de pesquisa de domínio:

def domain
country_codes = ['.dk', '.com', '.eu', '.net', '.org', '.biz', '.info', '.nu', '.name', '.se', '.fi', '.net', '.de', '.it'] # etc. could move this to a config if needed
@domain = params[:domain]
@results = {}
country_codes.each do |cc|
  @results[cc] = Whois.whois(@domain + cc)
end
  render :layout => false
end

Se o params [: domain] for "asdasdasd" ou "alguma coisa", quero renderizar a visualização padrão.

Mas se o params [: domain] for o exemplo "asdasd.dk" ou "asdasdasd.com" eu quero renderizar esta ação e enviar os parâmetros do domínio para esta ação:

def domainname
@tld = "get the tld" 
country_codes = [@tld]
@results = Domains.order("#{@tld} ASC")
country_codes.each do |cc|
  @results[cc] = Whois.whois(@domain + cc)
end
  render :layout => false
end
0

2 Respostas

Eu queria escrever um before_filter, mas depois de um pensamento, fazer uma ação será mais seco ...

def domain
  codes = get_tld(params[:domain]) || country_codes
  codes.each do |c|
    @results[c] = Whois.whois(@domain + c)
  end
    render :layout => false
  end
end

# return array with one element if matched, else nil
def get_tld(string)
  country_codes.each{|cc| return [cc] if string.end_with?(cc)}
  nil
end

#contry_codes should be defined somewhere else...

Eu não entendo o que @results = Domains.order ("# {@ tld} ASC") deveria fazer, mas se você precisa fazer algo com resultados no caso de ter tld em params, você sempre pode verificar os códigos. tamanho == 1

0
adicionado

Os params estão disponíveis em ambas as ações, você não precisa "mandá-los" para o segundo método; eles já estão lá.

Apenas chame o segundo método se suas condições forem atendidas, caso contrário, faça o que você já está fazendo.

0
adicionado
Como posso verificar se os params [: domínio] têm um TLD?
adicionado o autor Rails beginner, fonte
Confira os documentos da Matriz no apidoc ; Existem várias maneiras de fazer isso. Tenha em atenção que existem TLDs adicionais em comparação com a sua lista; isso pode ou não ser importante.
adicionado o autor Dave Newton, fonte