(Новичок по Ruby-on-rails) Как: выбрать переменную с определенным идентификатором - PullRequest
0 голосов
/ 02 июля 2019

Примечание : 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", для загрузки, если кому-то интересно.Но это не важно в отношении моей проблемы.

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