«A - это n-битовое целое число с кратной точностью, представленное в radix r» Что означает это утверждение? В частности, что означает A, являющееся n-битовым целым числом с множественной точностью? Пожалуйста, помогите. Спасибо
-121--1452009-Я понимаю, что наблюдатель Rails не должен иметь прямого доступа к контроллеру. Это имеет смысл, нет ничего говорящего о том, из какого контекста будет вызван наблюдатель. Однако у меня есть дело, которое, я думаю, заслуживает косвенного коммуникационный между ними, и я задаюсь вопросом, как его достичь.
Регистрация и запись событий аналитики
Я хотел бы использовать наблюдателя для запуска определенных событий в Google Analytics. В настоящее время это работает путем, что контроллер приложений имеет метод, который регистрирует событие, а затем шаблон application.html.erb
печатает соответствующий javascript на странице:
class ApplicationController < ActionController::Base
def logGAEvent category, action, opt_hash={}
event = { :category => category,
:action => action,
:label => opt_hash[:label],
:value => opt_hash[:value]}
(session[:ga_events] ||= []) << event
end
end
Application.html.erb
<html>
<head>
...
<script type="text/javascript">
<%= print_ga_events_js %>
</script>
</head>
...
</html>
Пример события:
class UsersController < ApplicationController
...
def create
...
if @new_user
logGAEvent('user', 'signup')
end
end
end
Почему я хотел бы общаться между наблюдателем и контроллером
В данный момент метод logGAEvent вызывается в контроллерах после определенных примечательных событий (кто-то подписывается, создает новый профиль и т.д.).
Было бы гораздо более приятным образцом абстрагировать большинство этих событий в наблюдателя. Это приведет в порядок контроллер, а также сделает отслеживание менее случайным. Однако, как только они попадут к наблюдателю, все еще должен быть способ для шаблона, чтобы получить доступ к данным наблюдателя и распечатать его.
Что бы я хотел сделать
Поскольку наблюдатель не должен знать о контроллере, Что я хотел бы сделать, это записать эти события в одноразовый буфер, чтобы они были сброшены в конце каждого вызова, но они также доступны контроллеру для записи в документ:
class UserObserver < ActiveRecord::Observer
after_create user
# I have no idea what would constitue request.buffer but this is
# the pattern I'm looking for
request.buffer.ga_events << createGAEvent('user', 'create')
end
end
end
application.html.erb (с помощью буфера)
Application.html.erb
<html>
<head>
...
<script type="text/javascript">
<%= print_ga_events_js(request.buffer.ga_events) %>
</script>
</head>
...
</html>
Возможно ли это в некоторых путях? Мне это не кажется неразумным образцом, и это сделает приложение намного чище.