2016-08-20 13 views
0

私は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です。コロンはどういう意味ですか?なぜ冗長性ですか?もし私がそれを理解できれば、私のニーズを満たすためにそれをどのように変更する必要があるのか​​分かります。

+0

ルビでは、 'key'と' value'の両方が 'symbols'であるハッシュを持つことができます。したがって、 'opportunity::opportunity'は基本的に':opportunity =>:opportunity'と同じです。この場合、 '_audience.html.haml'部分に'ローカル変数 'を渡しています。 –

答えて

0

renderはHAMLないレール方式

= render @audience, opportunity: :opportunity 

であるあなたはおそらく、この変数@audience

render @audience内の文字列のHTML/HAMLは@audienceとopportunity: :opportunityに変数に値:opportunityを渡しているものをレンダリングされていopportunitylocals renderのオプション

コードをデバッグする方法については、このビデオをご覧ください。RailsCast Pry debug

関連する問題