2016-08-20 59 views
0

我是HAML和Ruby的新手,但我試圖改變一些窗體上的標準按鈕到單選按鈕中。代碼起作用。我只需要學習如何改變它。我完全不知道這行HAML代碼意味着什麼,除了我知道輸出我的兩個按鈕。該代碼是這樣的:解釋這個HAML和Ruby奇怪的代碼

 = render @audience, opportunity: :opportunity 

在瀏覽器的輸出是這樣的:

<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> 

我知道我有一個表在我的數據庫稱爲Opportunities。它包含一個名爲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

在ruby中,你可以有一個散列,其中'key'和'value'可以是'symbols'。因此,'機會::機會'與':opportunity =>:opportunity'基本相同,在這種情況下,您將'local variables'傳遞給'_audience.html.haml'部分。 –

回答

0

render不是HAML是Rails方法

= render @audience, opportunity: :opportunity 

你可能已經串HTML/HAML在這個變量@audience

render @audience正在呈現什麼是對@audience和opportunity: :opportunity傳遞變量的值:opportunityopportunitylocals render選項

請觀看此視頻以瞭解如何調試您的代碼RailsCast Pry debug