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