#ruby-on-rails
#ruby-on-rails
Вопрос:
Структура моей модели довольно надежная. У меня в MarketingDeliverySystem есть множество маркетинговых разделов. В MarketingSections есть множество MarketingVideos.
У меня есть еще один сегмент: GroupDevelopment has_many GroupSections. В GroupSections есть множество групповых видеороликов.
Я пытаюсь использовать partial для передачи переменных, таким образом, высушивая все это.
У меня есть следующее, что я пытаюсь передать частичному:
= 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)amp;.youtube_link}"
Ранее у меня были проблемы с sales_presentation.title вверху, пока я не обновил локальные файлы.
Мой вопрос / проблема в том, как мне пройти через локальные файлы для использования для sales_presentation.sections вместо использования @marketing_delivery_system.marketing.sections?
Я думал, что мог бы просто ввести это через locals: sales_presentation.sections: @marketing_delivery_system.marketing_sections, но в итоге я получаю массивную синтаксическую ошибку.
Я также попытался создать частичное представление для этих двух, а затем изменил sales_presentation во всем представлении на mod. Затем изменил mod.sections на mod_section и установил для локальных файлов значение mod_section: @marketing_delivery_system.marketing_section. Затем проблема заключается в том, что мне в конечном итоге нужно просмотреть видео позже на итерации. Итак, тогда возникает та же проблема.
Ответ №1:
Вы неправильно понимаете значение locals
в partials.
Говорит, что у нас есть
<%= render partial: 'image', locals: {size: @image.size, extension: @image.extension} %>
Это означает, что в image
частичном режиме теперь мы можем использовать локальную переменную size
and 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
будут иметь то же значение.