2

ダッシュをスペースに、アンダースコアをコンマに同時に置き換えるにはどうすればよいですか?

アンダースコアをコンマに置き換えることはできましたが、配列をもう一度繰り返してみると、ファンキーな結果が得られました。

コントローラ

  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 %>
4

2 に答える 2

4

String#trを使用して、文字のセットを別の文字に置き換えることができます。

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

上記は、元の@cities文字列をそのままにして、新しいリストを作成します。破壊的なバージョン(String#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!、適用されるオブジェクトを変更します。)

于 2012-04-17T20:53:27.100 に答える
2

試す:

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

与える:

<a href="activities-albuquerque-new-mexico">Albuquerque, New Mexico</a>
于 2012-04-17T20:42:04.947 に答える