Кнопка Ruby on Rails для изменения поля даты в базе данных на текущую дату для всех продуктов в списке покупок - PullRequest
0 голосов
/ 08 декабря 2018

У пользователя может быть несколько списков, а в списке может быть несколько продуктов

У продукта есть имя и дата последней покупки

Я пытаюсь добавить кнопку для каждого списка покупоккоторый при нажатии должен обновить дату last_purchase с текущей датой для всех конкретных продуктов, добавленных в список уже

Это то, что у меня сейчас

index.html.erb (в папке просмотра списка) {у каждого списка есть эта кнопка}

<%= button_to "Just-Shopped", just_shopped_product_path(...), :method => :put %>

rout.rb

resources :products do
    member do
       put 'just_shopped'
    end
  end

Я знаю, что должен создатьфункция в контроллере списка, но я не уверен, как выбрать все продукты из списка, игнорируя невыбранные, а затем обновить поле last_purchased с текущей датой

Это изображениекак ведет себя консоль рельсов при отображении продуктов списка

1 Ответ

0 голосов
/ 08 декабря 2018

Вы на правильном пути - во-первых, похоже, что вы хотите, чтобы кнопка применялась к продуктам списка, а не к отдельному продукту, поэтому давайте изменим маршрут на:

resources :lists do
  member do
     put 'just_shopped'
    end
  end
end

Затемв нашем lists_controller:

class ListsController < ApplicationController
   ...


  def just shopped
    list = List.find(params[:id])
    list.products.each do |product|
      product.update_attributes(last_purchased: DateTime.now)
    end
  end

Это наша настройка маршрута и действия контроллера, теперь нам просто нужно добавить правильную кнопку.Я предполагаю, что у вас есть переменная @lists (или current_user.lists или что-то в этом роде), и вы просматриваете их следующим образом:

<% @lists.each do |list| %>
  <%# whatever html you want for each list %>
  <%= button_to "Just-Shopped", just_shopped_list_path(list), :method => :put %>
end

Вам также необходимо выяснитькуда вы хотите перенаправить после обновления продуктов в вашем контроллере

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