Rails, как изменить представление в зависимости от переменной экземпляра?

У меня есть действие поиска домена:

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

Если параметры params [: domain] являются «asdasdasd» или «something», я хочу отобразить представление по умолчанию.

Но если params [: domain] являются примерами «asdasd.dk» или «asdasdasd.com», я хочу отобразить это действие и отправить параметры домена для этого действия:

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 ответы

Я хотел написать файл before_filter, но после одной мысли, сделав его одним действием, будет более DRY ...

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

Я не понимаю, что делать @results = Domains.order ("# {@ tld} ASC"), но если вам нужно что-то сделать с результатами, если у вас есть tld в params, вы всегда можете проверять коды. размер == 1

0
добавлено

Параметр доступен в обоих действиях, вам не нужно «отправлять» их второму методу; они уже там.

Просто позвоните по второму методу, если ваши условия выполнены, иначе сделайте то, что вы уже делаете.

0
добавлено
Как проверить, что параметры [: domain] имеют TLD?
добавлено автор Rails beginner, источник
Проверьте Документы Array на apidoc ; есть множество способов сделать это. Обратите внимание, что дополнительные TLD по сравнению с вашим списком; которые могут быть или не быть важными.
добавлено автор Dave Newton, источник
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков

Rails Chat
Rails Chat
87 участник(ов)

You are welcome to discuss Ruby On Rails development process and other stuff