2014-10-01 2 views
0

Я хочу отобразить частичную, но не показывать свою кнопку для одной страницы. Мое частичное выглядит так;Отдайте часть, но не оставляйте элемент в рельсах

.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

Сквозное еще одну переменную с частичной визуализации.

Частичное:

.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 

Rendering его:

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

Для тех из вас, кто не знаю, как это работает, это довольно просто: когда вы оказываете частично в Rails (ERb, HAML, что угодно), вы можете передать переменные для частичного использования. Таким образом, используя render 'reward', collection: artist.rewards, вы получите «вознаграждение» за частичный доступ к переменной artist.rewards, но на ней будут указаны ваши частичные как collection. Таким образом, вы можете делать что-то вроде кода выше.

+0

Спасибо, что имеют смысл. Но у меня все еще есть проблема, и я получаю эту ошибку: «неопределенная локальная переменная или метод« nopledge ». По какой-то причине переменная не создается, мой рендер выглядит так:' = render partial: 'reward', collection : artist.rewards, залог: true' – TuxedoTomson

+0

Если вы используете 'pledge' как свою переменную, тогда код не будет работать, по крайней мере, не с тем, что я предоставил --- элемент удаляется только если' nopledge' истинно , Это означает, что вам не нужно передавать его каждый раз, когда вы не хотите его показывать. Используйте 'except' и убедитесь, что переменная, которую вы передаете, является' nopledge' - * not * 'pledge'. Чтобы прояснить любые заблуждения, которые вы могли бы иметь, 'no' не делает ничего особенного, если префикс для переменной. – Alonessix

+0

К сожалению, это была опечатка. Я теперь называю это следующим образом: '= render partial: 'reward', collection: artist.rewards, nopledge: true' и в частичном:' - если nopledge' и ошибка: 'undefined local variable or method 'nopledge '' – TuxedoTomson

Смежные вопросы