我有这个域名搜索操作:
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”或“某事”,我想呈现默认视图。
但如果params[:domain]
是示例“asdasd.dk”或“asdasdasd.com”,我想呈现此操作并将域params发送到此操作:
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 :(得分:0)
这两种动作都可以使用参数,你不需要将它们“发送”到第二种方法;他们已经在那里了。
如果满足您的条件,只需调用第二种方法,否则执行您已经在做的事情。
答案 1 :(得分:0)
我想写一个before_filter,但经过一番思考后,让它成为一个动作会更加干......
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”)应该做什么,但是如果你需要对结果做一些事情,如果你有参数,你可以随时检查codes.size == 1