Прежде всего, сохранение постоянных данных в переменной класса контроллера не будет работать так, как вы этого хотите.Нет гарантии, что @@a
будет таким же массивом при следующем вызове addCompare
;например, ваш следующий вызов addCompare
может быть обработан другим процессом.Кроме того, что произойдет, если два разных клиента позвонят addCompare
?Вы действительно хотите смешать их данные в одну кучу?Возможно нет.Ваша первая задача - заменить @@a
реальным постоянным хранилищем для каждого пользователя.
Если вы хотите вообще ничего не возвращать с вашего контроллера, просто сделайте это в конце вашего метода контроллера :
render :nothing => true, :status => :ok
Это сообщит Rails, что что-то уже было отрендерено, поэтому ему не нужно пробовать действие рендеринга по умолчанию (то есть рендеринг представления posts/addCompare
) и ничего больше не возвращает, кромекод состояния 200 для клиента.
Как только это будет на месте, вы, вероятно, захотите AJAXify свою кнопку с помощью :remote => true
:
:remote
- Если установлено значение true, драйверы ненавязчивого JavaScript будут управлять поведением отправки.По умолчанию это поведение ajax submit.
Так вот:
<%= button_to "Add to Compare", { :action => "addCompare" }, { :remote => true } %>
Обратите внимание, что button_to
выглядит так:
button_to(name, options = {}, html_options = {})
и что:action
для options
, но :remote
для html_options
, поэтому вы должны явно установить хэши с помощью {}
;Вы можете просто обернуть options
в фигурные скобки:
<%= button_to "Add to Compare", { :action => "addCompare" }, :remote => true %>
, но я предпочитаю последовательность их обоих вручную.