私はHAMLとRubyを初めて使っていますが、私はラジオボタンのあるフォームでいくつかの標準ボタンを変更しようとしています。コードは機能します。私はちょうどそれを変更する方法を学ぶ必要があります。私はHAMLコードのこの行が私が2つのボタンを出力することを知っている以外に何を意味するのか全く分かりません。コードはこれです:このHAMLとRubyの奇妙なコードを説明してください
= render @audience, opportunity: :opportunity
ブラウザでの出力は次のようになります。私はOpportunities
と呼ばれる私のデータベース内のテーブルを持って知っている
<div class="col-md-6">
<a class="btn btn-lg btn-block btn-default audience-tab active" data-value="consumer" data-remote="true" href="/opportunities/229/edit?audience=consumer">Consumer</a>
</div>
<div class="col-md-6">
<a class="btn btn-lg btn-block btn-default audience-tab " data-value="business" data-remote="true" href="/opportunities/229/edit?audience=business">Business</a>
</div>
。それはaudience
と呼ばれるフィールドを含んでいます。私のコントローラの関連するいくつかの行は、次のようになります。
@opportunity = Opportunity.find(params[:id])
次に、これも私のコントローラにもあります。
if params[:audience].present?
@audience = params[:audience]
else
@audience = @opportunity.audience || 'consumer'
end
私が本当に知りたいのは、このHAMLのものが意味するところです。
= render @audience, opportunity: :opportunity
特にopportunity: :opportunity
です。コロンはどういう意味ですか?なぜ冗長性ですか?もし私がそれを理解できれば、私のニーズを満たすためにそれをどのように変更する必要があるのか分かります。
ルビでは、 'key'と' value'の両方が 'symbols'であるハッシュを持つことができます。したがって、 'opportunity::opportunity'は基本的に':opportunity =>:opportunity'と同じです。この場合、 '_audience.html.haml'部分に'ローカル変数 'を渡しています。 –