2016-09-17 3 views
0

次のコード:で使用することができます配列内の単語を置き換えるメソッドを作成するにはどうすればよいですか?

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

:私のようなメソッドを作成したい

国gender_typeのPHOTOS_COUNT

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

結果文字列を置き換える上記のコード

+0

おそらく、これらのいずれか、既に有用である可能性の質問をした:http://stackoverflow.com/questions/7021835/replace-string -with-array-content-in-rubyおよびhttp://stackoverflow.com/questions/20502165/how-to-replace-text-in-a-ruby-string – bork

答えて

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 %> 
+0

次のエラーが発生します。 'ActionView :: Template :: Error(未定義のローカル変数またはメソッド 'sub_words' for#<#<クラス:0x007fb5e8366c30>:0x007fb61b338f28>): 'および' ActionView :: Template :: Error(未定義メソッド 'rename' for#<< Class:0x007ff104324888> :0x007ff13c76b7d8>): ' –

+1

申し訳ありませんが、私の答えを更新しました。変数名に '@'をつけたり、 '' helper_method'(http://apidock.com/rails/AbstractController/Helpers/ClassMethods/helper_method)のように '' rename'メソッドを宣言する必要があります。 – dinjas

+0

それは '' country ":String'として渡されています –

関連する問題