Примечание : view
файлы находятся в haml
.
У меня есть progress_board .У каждого есть несколько progress_board_metrics , как вы можете видеть здесь в моих ProgressBoard model
:
class ProgressBoard < ApplicationRecord
validates :name, presence: true
belongs_to :user
has_many :progress_board_metrics, dependent: :destroy
...
end
и ProgressBoardMetric model
:
class ProgressBoardMetric < ApplicationRecord
belongs_to :progress_board
...
end
Эти многие progress_board_metrics делятся на различные типы на моей progress_board , используя этот способ в моей view file
:
- @progress_board_metrics.each do |pbm|
.col-xs-3{id: "#{pbm.metric_id}_#{pbm.project_id}_div"}
= render "panel", pbm: pbm
-> In "панель"
- metric = pbm.metric
- metric_id = pbm.metric_id
- metric_type = pbm.metric_type
- project = pbm.project
- color = colors.sample
Затем отображаются эти метрики .
Этот рисунок иллюстрирует ситуацию: https://user -images.githubusercontent.com / 3534666 / 59639202-6e933e00-9152-11e9-9fb0-19327fc72083.png (извините за ссылку на изображение, но я не могу опубликовать изображение напрямую, потому что мне нужно не менее 10 репутации)
Моя цель - разрешить пользователю добавлять изображение в любой показатель он хочет индивидуально (как на картинках с пляжем, которые вы можете видеть на картинке выше)
Чтобы добиться этого:
- Я добавил
cover_image
параметр длямои метрики в моей модели следующие:
has_attached_file :cover_image,
:styles => { ... }
validates_attachment_content_type :cover_image, :content_type => ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/bmp']
def assign_cover_image
if ci = params[:progress_board_metric_id][:cover_image]
cover_image = ci
end
cover_image = File.open(cover_image_path)
self.cover_image = cover_image
self.save
end
...
end
- Я использую кнопки на каждой * метрике ** (сверху right), которые открывают раскрывающееся меню:
.dotsbg{"data-toggle" => "dropdown", :href => "#", class:"btn makerble-btn-testButton"}
= render "progress_board_panel_menu", pbm: pbm ## I pass the param pbm: pbm but I don't really know what to write here
Вот мои строки кода меню:
%ul.dropdown-menu.header-right-submenu{class: "custom_dropdown"}
- if @pbm.metric_id.cover_image.present?
%li= link_to 'Remove Picture', remove_pbm_cover_progress_board_path, id:"#{pbm.id}"
%li= link_to 'Edit Picture', 'javascript:void(0)', onclick: "$('#create_edit_progress_board_model').appendTo('body').modal('show'); loadProgressForm('pbm_cover', #{@pbm.metric_id});"
- else
%li= link_to 'Add Picture', 'javascript:void(0)', onclick: "$('#create_edit_progress_board_model').appendTo('body').modal('show'); loadProgressForm('pbm_cover', #{@pbm.metric_id});"
Теперь моя проблема :Я не знаю, что использовать, чтобы указать идентификатор метрики , чтобы проверить, есть ли у моего метрика прикрепленный cover_image
в моем if statement
, а также использовать его в моем link_to
список.Должен ли я использовать @ или нет?pbm.id?pbm.metric_id?@ progress_board_metrics.id?=> В этот момент я заблудился.
Примечание : мои link_to
используют loadProgressForm
ajax-метод, записанный в файле "create_edit_progress_board_model", для загрузки, если кому-то интересно.Но это не важно в отношении моей проблемы.