如何创建一个替换数组中单词的方法?

时间:2016-09-17 20:22:50

标签: ruby-on-rails

以下代码:

<% (params.keys & User::FILTERS).each do |f| %>
  <%= f %>
<% end %>

结果

  

country gender_type photos_count

我想创建一个类似的方法:

def rename 
 country = Country of Origin 
 gender_type = Gender 
 photos_count = Number of Photos
end

可以在上面的代码中用来代替字符串。

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点。

一种方法是在控制器中声明Hash,如下所示:

@sub_words = {
  "country" => "Country of Origin",
  "gender_type" => "Gender",
  "photos_count" => "Number of Photos"
}

然后在你看来做:

<% (params.keys & User::FILTERS).each do |f| %>
  <%= @sub_words.fetch(f, f) %>
<% end %>

您也可以按照建议使用方法。在你的控制器或助手中:

def rename(filter)
  case filter
  when "country"
    "Country of Origin"
  when "gender_type"
    "Gender"
  when "photos_count"
    "Number of Photos"
  else
    filter
  end
end
helper_method :rename

在您看来:

<% (params.keys & User::FILTERS).each do |f| %>
  <%= rename(f) %>
<% end %>