2012-04-17 4 views
1

대시를 공백으로 바꿀 수있는 방법 &은 동시에 쉼표로 밑줄을 긋습니까?대시를 배열의 공백으로 바꾸는 방법

밑줄을 쉼표로 바꿀 수는 있었지만 배열을 다시 보려고하면 다시 펑키 한 결과가 나타납니다.

컨트롤러

def activity_by_all_city 
     @cities = ['Abilene_Texas','Akron_Ohio','Albuquerque_New-Mexico','Baton-Rouge_Louisiana'] 
    end 

보기

<% @cities.each do |city|%> 
    <%= link_to city.gsub!(/_/, ', '), 'activities-'+city.parameterize %><br> 
<% end %> 

답변

2

시도 :

<%= link_to city.replace(city.gsub(/-/, ' ').gsub(/_/, ', ')), 'activities-'+city.parameterize %><br> 

가 제공합니다 :

<a href="activities-albuquerque-new-mexico">Albuquerque, New Mexico</a> 
3

을 당신 서로 문자 집합을 대체 할 String#tr를 사용할 수 있습니다

@cities.collect {|city| city.tr('-_', ' ,') } 
=> ["Abilene,Texas", "Akron,Ohio", "Albuquerque,New Mexico", "Baton Rouge,Louisiana"] 

위는 그대로 원래 @cities 문자열을 유지, 새 목록을 만들 것입니다. 당신이 파괴 버전 (! 문자열 #의 TR)를 사용하는 경우 는 문자열 @cities 번역 된 도시 이름을 개최하고, 대신에 수정됩니다 :

@cities.each {|city| city.tr!('-_', ' ,') } 
=> ["Abilene,Texas", "Akron,Ohio", "Albuquerque,New Mexico", "Baton Rouge,Louisiana"] 
@cities 
=> ["Abilene,Texas", "Akron,Ohio", "Albuquerque,New Mexico", "Baton Rouge,Louisiana"] 

(이 원리는 모든 "파괴적인"방법에 gsub! 적용 그들은 적용된 객체를 변경합니다.

+1

저자는 공백을 ','(쉼표 + 공백)로 바꾸려고했습니다. 나는 이것이'tr' 메소드에 적합하지 않다고 생각한다. – jdoe

+0

참. 나는이 방식으로 질문을 해석하지 않았지만 이것이 의도 된 것이라면 당연히 정확합니다. –

관련 문제