Rails Locals - Передача связанных данных модели - PullRequest
0 голосов
/ 05 апреля 2019

Моя модель довольно прочная. У меня есть MarketingDeliverySystem has_many MarketingSections. MarketingSections has_many МаркетингВидео.

У меня есть другой сегмент: GroupDevelopment has_many GroupSections. GroupSections has_many GroupVideos.

Я пытаюсь использовать партиал, чтобы передать переменные, таким образом, СУШИТ все это.

У меня есть следующее, что я пытаюсь перейти к частичному:

= render partial: '/sales_presentations/sales_presentation',
                    locals: { marketing_delivery_system: @marketing_delivery_system,
                              first_video: first_marketing_video(@marketing_delivery_system),
                              sales_presentation: @marketing_delivery_system}

Тогда в частичном я имею следующее:

.rounded-box-header.blue-bg #{sales_presentation.title}   
 ul
  - sales_presentation.sections.ordered.each_with_index do |section, index|
   - list_class = 'section show'
   - list_class = 'section hide' if index != 0
     li
      = link_to section.title, '#', class: 'section', data: { id: section.id }
              ul class="#{list_class}" data-section-id="#{section.id}"
                - section.videos.ordered.each do |video|
                  li.video
                    = link_to video.title, '#',
                                           class: 'video video-link',
                                           data: { video: video.youtube_link,
                                                   sales_presentation: sales_presentation.title.parameterize }
      .seven.columns
        .row
          div id="#{sales_presentation.title.parameterize}-container"
            video {
              id="#{sales_presentation.title.parameterize}-video-player"
              class="video-js vjs-default-skin videos"
              height=400
              poster=""
              controls preload='none'
              data-default-url="#{first_video(sales_presentation)&.youtube_link}"

У меня ранее были проблемы с sales_presentation.title вверху, пока я не обновил локальные данные.

Мой вопрос / проблема заключается в том, как мне пройти через местных жителей, чтобы использовать для sales_presentation.sections вместо использования @ marketing_delivery_system.marketing.sections?

Я думал, что мог бы просто рассказать об этом через местных жителей: sales_presentation.sections: @ marketing_delivery_system.marketing_sections, но в итоге я получаю массивную синтаксическую ошибку.

Я также попытался создать частичное представление для этих двух, а затем изменил sales_presentation в моде. Затем изменил mod.sections на mod_section и установил для местных жителей значение mod_section: @ marketing_delivery_system.marketing_section. Проблема в том, что мне нужно попасть в видео позже в итерации. Итак, тогда возникает та же проблема.

1 Ответ

0 голосов
/ 06 апреля 2019

Вы неправильно понимаете значение locals в частичных выражениях.

говорит, что у нас есть

<%= render partial: 'image', locals: {size: @image.size, extension: @image.extension} %>

Это означает, что в частичном image теперь мы можем использовать локальные переменные size и extension (ключи) в качестве @image.size и @image.extension (значения).

Введите locals: {} все локальные переменные, которые вы хотите.

То есть вы не можете писать местным жителям sales_presentation.sections: @marketing_delivery_system.marketing.sections

Но вы можете sales_presentation_sections: @marketing_delivery_system.marketing.section

Также у вас есть проблема с этим кодом:

locals: { marketing_delivery_system: @marketing_delivery_system,
          first_video: first_marketing_video(@marketing_delivery_system),
          sales_presentation: @marketing_delivery_system }

marketing_delivery_system и sales_presentation будут иметь одинаковое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...