2012-04-17 17 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

真。私はこのように質問を解釈しませんでしたが、これが意図されたものであれば、もちろん正しいです。 –

関連する問題