Я создаю как модель в моих рельсах application.Firstly я написал что-то вроде этого:Как правильно реорганизовать код:
- if BonusLikePolicy.new(current_user, bonus).create?
= link_to bonus_likes_path(bonus), method: :delete,
data: { remote: true, behavior: "fragments" } do
span.dislike
- else
= link_to bonus_likes_path(bonus), method: :post,
data: { remote: true, behavior: "fragments" } do
span.like
Он отлично работает, но, как вы видите, вот несколько повторяющихся. Так что мне нужно было сделать это DRY и переписать:
= bonus.link_to_like(bonus, current_user)
И создать метод для бонуса:
def link_to_like(bonus, user)
options = { class: "like", method: :post }
options = { class: "dislike", method: :delete } unless BonusLikePolicy.new(user, bonus).create?
h.link_to(
h.tag(:span, class: options[:class]), h.bonus_likes_path(bonus),
method: options[:method], data: { remote: true, behavior: "fragments" }
)
end
Я получил ошибку, неопределенный метод уничтожения для нулевого класса. Может, я что-то пропустил, но не могу найти. Пожалуйста, помогите :)
UPD:
Кроме того, мои значки пролетных не показывать правильно (это означает, что класс, который я прохожу в h.tag также не прошло)
NoMethodError (undefined method `destroy' for nil:NilClass):
app/controllers/likes_controller.rb:12:in `destroy'
POSTING свою ошибку обратно след будет быть полезным – Bustikiller
@Bustikiller проверка обновления –
@Bustikiller я думаю o ptions не правильно передает h.tag все –