解释这个HAML和Ruby奇怪的代码

时间:2016-08-20 03:25:09

标签: ruby-on-rails haml

我是HAML和Ruby的新手,但我正在尝试将我所拥有的表单上的一些标准按钮更改为单选按钮。代码有效。我只需要学习如何改变它。我完全不知道这行HAML代码意味着什么,除了我知道它输出我的两个按钮。代码是这样的:

      = 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。冒号是什么意思?冗余为什么?如果我能弄清楚那么我可能会理解我需要如何改变它来满足我的需求。

1 个答案:

答案 0 :(得分:0)

render不是haml是一种rails方法

= render @audience, opportunity: :opportunity

你可能在这个变量@audience

中有字符串html / haml

render @audience正在呈现@audience上的内容,opportunity: :opportunity使用:opportunity选项传递变量opportunity中的值locals render

请观看此视频,了解如何调试代码require transformer