Я пытаюсь использовать команду update_attribute
, но изо всех сил пытаюсь заставить ее работать (на всех) и надеялся, что кто-то может указать мне в правильном направлении?Начинающий борется с командой update_attribute
Я ранее задавал вопрос об этой проблеме, это было очень полезно с точки зрения понимания механики происходящего, но, к сожалению, на самом деле это не работало.
У меня есть база данных элементов (элементов), которая среди прочего содержит ': item_name', ': click_count' и ': external_url'.
В настоящее время у меня есть представление (Showselecteditems), в котором есть список всех элементов, когда пользователь нажимает на имя элемента, они направляются на соответствующий внешний url. Это работает, используя код:
<%= link_to selecteditem.item_name.to_s, selecteditem.external_url %>
Теперь я хотел бы добавить возможность подсчитать количество раз конкретное название элемента было перешедших на (то есть в общей сложности для всех пользователей, а не для отдельных пользователей) и, следовательно, количество раз, когда каждый внешний URL был посещен, чтобы выработать наиболее популярный.
Чтение вокруг, я считаю, что мне нужно изменить код, чтобы что-то вида:
<%= link_to selecteditem.item_name.to_s, selecteditem.external_url, {:controller => params[:controller], :action => clickcountplusone, :identifier => selecteditem.item_name} %>
И нужно определить эту функцию где-то - кажется, можно найти только если они находятся в «application_helper»?
def clickcountplusone
clickeditem = Items.find(params[:identifier])
clickeditem.update_attribute(:click_count, clickeditem.click_count + 1)
rescue ActiveRecord::RecordNotFound # to avoid error if no identifier value
end
Излишне говорить, что я не могу получить эту работу ... Мой вопрос, поэтому, как я могу настроить все правильно, так что при нажатии на ссылку на счет увеличивается? Другая общая проблема, о которой люди, похоже, сообщают, заключается в том, что число будет увеличиваться каждый раз, когда страница обновляется, и я бы хотел, если бы это было возможно.
Раньше люди предлагали добавить в раздел «показ» контроллера «Items», однако я не знаю, как это будет работать, поскольку ссылки нажимаются на странице просмотра Showselecteditems, а не на самой базе данных, где вы получаете команды show, edit, destroy. Любые советы очень оценили.
Спасибо за это - ваша логика кажется гораздо более перспективным чем у меня ... Я внес свои изменения, но я все еще получаю сообщение об ошибке (это моя ошибка, а не твоя ...), которую я также пытался решить. Я получаю следующее сообщение: 'undefined local variable or method 'clickcountplusone' для # <# <Класс: 0x277de50>: 0x27037e0>'. Это проблема с route.rb? В настоящее время 'resources: uniquewetsuits do, get: clickcountplusone, end', clickcountplusone появляется, когда я печатаю' rake routes'. Еще раз спасибо – Texas
Также используется 'get' проблема, так как некоторые вещи, которые я прочитал, предлагают использовать' post', но я не могу понять, возможно ли это с помощью 'link_to'? – Texas
Если вы уже указали маршруты для своих ресурсов, вы можете использовать хелперы маршрутов в link_to: '<% = link_to selecteditem.item_name.to_s, send (" clickcountplusone _ # {params [: controller]} _ path ", selecteditem.item_name)% > '. Но ваши параметры [: controller] должны быть равны именам маршрутов для этого ресурса в 'rake routes' – Hck