1

Я использую импрессионистский камень для записи просмотров страниц.
Скажем, у меня есть модель Вопрос и ответ модель:RoR Импрессионизм захвата внешнего клика

question.rb:

class Question< ActiveRecord::Base 
    has_many :answers 
    is_impressionable 

answer.rb:

class Answer< ActiveRecord::Base 
    belongs_to :question 
    is_impressionable 

В вопросах \ show.html.erb, У меня есть список ответов.
Когда пользователь наводится на ответ, они видят 2 ссылки: подробности и переход.
Детали ссылки только открывает ответ показать страницу (которая содержит более подробную информацию) и записывает шоу впечатление и работает правильно:

answers_controller.rb:

impressionist(@answer) 

ОХ странице Tricker. Когда пользователь нажимает на ссылку:

<%= link_to "Go to", :class => 'answer_link', :remote=>:true, 
     :data=>{outval: answer.type_url, cuid: answer.id.to_s, refval: user_question_path(@question.user, @question), txtval: answer.img_url} do %> 
      <span class="small_image"> 
       <%= image_tag(answer.img_url, :alt => 'go to answer', :class =>'img_answer') %> 
      </span> 
    <% end %> 

, я запускаю следующий JQuery фрагмент кода:

$('.answer_link').click (-> 
    url_val='' 
    url_val = "http://api.somewebservice.com/api/click?key=abc123" 
    url_val += "&out=" + $(this).data('outval') 
    url_val += "&loc=" + $(this).data('refval') 
    url_val += "&cuid=" + $(this).data('cuid') 
    url_val += "&ref=" + $(this).data('refval') 
    url_val += "&txt=" + $(this).data('txtval') 
    window.open url_val 
) 

Это работает правильно и работает веб-сервиса, а затем открывает возвращаемый внешнюю ссылку в новом окне.
Моя проблема заключается в том, чтобы зафиксировать этот внешний клик как впечатление.
Каков наилучший способ сделать это? В настоящее время, когда я нажимаю внешнюю ссылку, запускается контролер вопросов.

Конкретный вопрос # 1: Это «кажется» правильным в том, что я не хочу никуда идти (другое окно уже открыто с внешней ссылкой). Правильно ли использовать контроллер вопросов, показать действие, а если params [: id] == «Перейти», то просто оставайтесь на месте.

Конкретный вопрос № 2: Если это правильно, то есть способ, чтобы отправить импрессионист в: action_name (я послал бы «перейти к» вместо значения по умолчанию, что теперь отправка «шоу»:

? Конкретный вопрос № 3: Если это не правильно, то что я должен делать Возможно, идя на контроллер ответов, на заказ определяются «go_to»

ТИА

ответ

0

OK - у меня есть решение (не уверен, что он лучший, но он работает)

  1. question.rb и answer.rb сверху остаются теми же
  2. Рассчитывать впечатления страницы ответа show.html.erb, я до сих пор используют в answer_controller,:

    impressionist(@answer) 
    
  3. Подсчитать впечатления, когда я обращаю от ответа, я создал новый размораживание в answer_controller:

    def visit_external_site 
        @answer= Answer.find(params[:answer_id]) 
        impressionist(@answer) 
        respond_to do |format| 
        format.html {render :nothing => true, :status => 200} 
        end 
    end 
    

(часть я не уверен, является format.html (я не хочу идти куда угодно, но все же ....)

  1. Мой routes.rb имеет это:

    match '/:answer_id' => 'answers#visit_external_site', :as => 'visit_external_site' 
    
    1. Вопросы \ show.html.erb страница это сейчас:

<% @question.answers.each do |answer| %> 
    <%= link_to url_for(:controller => :answers, :action => :visit_external_site, :answer_id => answer), 
          :class => 'answer_link', :remote => true, 
          :data => {outval: 
              answer.type_url, cuid: answer.id.to_s, refval: 
              user_question_path(@question.user, @question), txtval: 
              answer.img_url} do %> 
       <span class="small_image"> 
        <%= image_tag(answer.img_url, :alt => 'go to answer', :class => 'img_answer') %> 
       </span> 
       <% end %> 
<% end %> 
  1. Мой JQuery все та же, что и выше

Если у кого есть лучший способ сделать это, не сказать; Я не уверен, что этот путь «кошерный»

Смежные вопросы