2016-08-20 58 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