ハッシュの中に条件演算子を加えたい


現在、下記のようなコードになっており、

[code]

    current_page?(controller: 'foo', action: 'bar')
    
[/code]

今回は、actionを増やしたい(違うactionでも動かせる）と考えています。  
しかし条件演算子でかいてもうまくいかないです。  
下記のように書いても、片方のactionしか動かないです

[code]

    - if current_page?(controller: 'locations', action: "new" || "index")
    
[/code]

どのようにかけばうまく動作させることができるのか教えていただきたいです。  
よろしくお願い致します。




`"new" || "index"`は常に`"new"`にしかならないので、`current_page?(controller: 'locations',
action: "new")`と書いたのと同じなのが、意図どおりに動かない原因だと思います。

[`current_page?`の実装](https://github.com/rails/rails/blob/606ce3f907cbccd9159bb558c0b57433b42f3975/actionview/lib/action_view/helpers/url_helper.rb#L525)を見ると途中で`url_for`で変換されてしまうようなので1度に判定するのは難しそうです。

愚直な案でよければ以下のようにやれば動くかと思います。

### 案1. `case/when`で1つずつ判定する

[code]

    - case
    - when current_page?(controller: 'locations', action: "new")
    - when current_page?(controller: 'locations', action: "index")
    
[/code]

### 案2. `Array#any?`を使う

[code]

    - if %w[new index].any? {|action| current_page?(controller: 'locations', action: action) }
    
[/code]

実際の使われ方とか周辺コードがわからないのであれですが……個人的には、`current_page?`って必要以上に複雑な感じがするので`controller_name`、`action_name`とかでシンプルに`Array#include?`とか`case/when`とか`==`とかで比較したほうがわかりやすそうな気がしています。

例えば、コントローラ側でどういうアクションが対象かを定義しておいて、

[code]

    class LocationsConroller < ApplicationController
      HOGE_ACTIONS = %w[index new]
    end
    
[/code]

ビューで判定するとかですね。

[code]

    - if LocationsConroller::HOGE_ACTIONS.include?(action_name)
    
[/code]

定数定義やロジックを`LocationsHelper`に切り出してもいいと思います。

