渲染部分,但在轨道中省略一个元素

时间:2014-10-01 19:48:51

标签: ruby-on-rails ruby-on-rails-4 haml

我想呈现部分但不显示一个页面的按钮。我的部分看起来像这样;

.reward
  %h4== #{number_to_currency(reward.price, precision:0)} Per Month
  %h5= test.test
  %h6 foo
  %p= foo.description
  %a.button.button-green{:href => foo(bar)} foo

我称之为

= render partial: 'foo', collection: bar.rewards

如何在不显示按钮的情况下渲染此部分:此行:

%a.button.button-green{:href => foo(bar)} foo

1 个答案:

答案 0 :(得分:1)

使用部分渲染传递另一个变量。

部分:

.reward
  %h4== #{number_to_currency(reward.price, precision:0)} Per Month
  %h5= artist.number_of_supporters
  %h6 Supporters
  %p= reward.description
  - unless nopledge
    %a.button.button-green{:href => new_reward_pledge_path(reward)} Pledge

渲染:

= render partial: 'reward', collection: artist.rewards, nopledge: true

对于那些知道它如何工作的人来说,这很简单:当你在Rails(ERb,HAML,任何东西)中渲染部分时,你可以将部分的变量传递给使用。因此,使用render 'reward', collection: artist.rewards会为artist.rewards变量提供“奖励”部分访问权限,但会在您的部分collection中引用它。所以你可以像上面的代码那样做。