Rails cum se schimba vederea dependentă de variabila instanței?

Am această acțiune de căutare domeniu:

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

Dacă params [: domain] sunt "asdasdasd" sau "something" vreau să redenumesc vizualizarea implicită.

Dar dacă params [: domain] sunt exemplu "asdasd.dk" sau "asdasdasd.com" vreau să redau această acțiune și să trimit paramatele domeniului la această acțiune:

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 răspunsuri

Am vrut să scriu un filtru înainte, dar după un gând, făcând-o o singură acțiune va fi mai uscată ...

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...

Nu înțeleg ce trebuie să facă @results = Domains.order ("# {@ tld} ASC"), dar dacă trebuie să faceți ceva cu rezultate în cazul în care ați făcut paramuri, puteți verifica întotdeauna codurile. Dimensiunea == 1

0
adăugat

Paramalele sunt disponibile în ambele acțiuni, nu este nevoie să le "trimiteți" la a doua metodă; sunt deja acolo.

Doar apelați la a doua metodă dacă condițiile dvs. sunt îndeplinite, altfel faceți ceea ce faceți deja.

0
adăugat
Cum verific dacă paramurile [: domain] au un TLD?
adăugat autor Rails beginner, sursa
Consultați documentul Documente array pe apidoc ; există o grămadă de moduri de a face acest lucru. Rețineți că există TLD-uri suplimentare în comparație cu lista dvs.; care pot sau nu să fie importante.
adăugat autor Dave Newton, sursa