1

我使用Impressionist gem來記錄頁面瀏覽量。
比方說,我有一個問題模型和答案型號: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 
) 

這正常工作,並運行一個Web服務,然後打開一個新的窗口,返回的外部鏈接。
我的問題是試圖捕獲此外部點擊作爲印象。
這樣做的最好方法是什麼? 目前,當我點擊外部鏈接,問題控制器,顯示動作運行。

具體問題#1:這個「似乎」是正確的,我不想去任何地方(另一個窗口已經打開外部鏈接)。使用問題控制器,顯示操作和參數[:id] ==「轉到」是否正確,然後保持放置。

具體問題2:如果這是正確的,那麼有沒有辦法送印象派的:ACTION_NAME(我派「去」,而不是默認的是它現在發送的「秀」:

? 具體問題三:如果它是不正確的,那麼我應該怎麼做也許要到答案控制器,一個自定義的「go_to」

TIA

回答

0

行 - 我有一個解決方案(不知道它是否是最好的,但它的工作原理)

  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的仍然是與上面相同

如果任何人有這樣做的更好的辦法,就告訴;我不確定這種方式是否「猶太教」