2016-05-25 5 views
0

いくつかの条件に従ってRailsヘルパメソッドのパラメータを設定する必要があるため、私のRailsビューでは重複したコードがあります。同様に:条件付きのパラメータを持つRailsヘルパメソッド

<% if something %> 
    <%= link_to "Target", @target, class: "target-a" %> 
<% else %> 
    <%= link_to "Target", @target, class: "target-b" %> 
<% end %> 

または別の例:

<% if tooltip == false %> 
    <%= image_tag picture.url(size), class: "img-responsive #{css_class}" %> 
<% else %> 
    <%= image_tag picture.url(size), class: "img-responsive #{css_class}", data: { toggle: "tooltip", placement: "bottom" }, title: "#{picture.name}" %> 
<% end %> 

(全体のヘルパーを繰り返すことなく)、よりエレガントな方法でこれを書いている方法はありますか?

あなたはオプションのハッシュの違いを分離し、共有ベースオプションのハッシュにちょうど違いをマージすることができ感謝し

答えて

0

いっそ
<% 
    link_options = 
    if something 
     {} 
    else 
     { data: { toggle: "tooltip", placement: "bottom" }, title: "#{picture.name}" } 
    end 
%> 
<%= image_tag picture.url(size), 
       link_options.merge(class: "img-responsive #{css_class}") %> 

または、あなたは事の同じ並べ替えを行うことができますしかし、あなた自身のカスタムヘルパーメソッドです。テストしたり、再利用したり、名前をつけたり(自己文書化の方法で)するなどの方法があるので、ヘルパーメソッドを使用することが望ましい。

+0

ああハッシュマージ。思ったよりも簡単です:-)ありがとうございました! –

関連する問題