【问题标题】:Explain this HAML and Ruby weird code解释这个 HAML 和 Ruby 奇怪的代码
【发布时间】:2016-08-20 03:25:09
【问题描述】:

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

【问题讨论】:

  • 在 ruby​​ 中,您可以有一个哈希,其中 keyvalue 都可以是 symbols。所以,opportunity: :opportunity 本质上与:opportunity =&gt; :opportunity 相同,在这种情况下,您将local variables 传递给_audience.html.haml 部分。

标签: ruby-on-rails haml


【解决方案1】:

render 不是haml 是rails 方法

= render @audience, opportunity: :opportunity

你可能在这个变量中有字符串 html/haml @audience

render @audience正在渲染@audience 上的内容,opportunity: :opportunity 将值:opportunity 传递给变量opportunitylocals renderoptions

请观看此视频以了解如何调试您的代码RailsCast Pry debug

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2018-01-11
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多