2016-12-14 6 views
0

私は以下のようにしてローカルから注入することからclassyクラスを取得したいと思っていますが、classyのメソッドは未定義です。ローカル変数をレールに挿入する

//ビュー

<%= render layout: "layouts/partial", locals: {className: "classy"} do %> 
... 
<% end> 

//部分

<div class="regular-div <%=className if className?%>"></div> 
+0

あなたは何を意味するのですか?ローカル変数 'className'を渡していて、' className'も参照しています。これは単なる誤植ではないと確信していますか? – max

+0

'className'が部分的に「classy」になっていません。私はdivにクラス "classy"を持たせたいとします。 – stackjlei

+0

local_assigns.has_key?(:className)%> 'の場合は、<%= classNameにする必要があります。 'className'と' className? 'は同じではないからです。 'local_assigns.has_key(:className)'は、ローカル変数が設定されているかどうかを安全にチェックする方法です。 – max

答えて

1

ローカル変数が安全にローカル変数にアクセスするために使用local_assigns.has_key?(:some_key)またはlocal_assigns[:some_key]を設定されているかどうかを確認するには。

クラスのリストを構築する一般的なタスクを処理する気の利いた方法は次のとおりです。

module ApplicationHelper 
    # Takes an array or list of classes and returns a string 
    # Example: 
    # class_list('a', 'b', nil, 'c') 
    # => "a b" 
    # class_list(['a', 'b', nil, 'c']) 
    # => "a b c" 
    def class_list(*classes) 
    [*classes].flatten.compact.join(' ') 
    end 
end 

次に、あなたが行うことができます:

<div class="<%= class_list('regular-div', local_assigns[:className]) %>"></div> 
関連する問題