【问题标题】:RoR Impressionist capture external clickRoR Impressionist 捕获外部点击
【发布时间】:2013-03-14 10:10:03
【问题描述】:

我正在使用印象派 gem 来记录页面浏览量。
假设我有一个 Question 模型和一个 Answer 模型:

question.rb:

class Question< ActiveRecord::Base
  has_many :answers
  is_impressionable

answer.rb:

class Answer< ActiveRecord::Base
  belongs_to :question
  is_impressionable

在 questions\show.html.erb 中,我有一个答案列表。
当用户将鼠标悬停在答案上时,他们会看到 2 个链接出现:详细信息和转到。
详细信息链接只是打开答案显示页面(提供更多详细信息)并记录显示印象并正常工作:

answers_controller.rb:

 impressionist(@answer)

转到页面是骗人的。当用户点击链接时:

 <%= 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 sn-p:

 $('.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:这个“似乎”是正确的,因为我不想去任何地方(另一个窗口已经打开了外部链接)。使用问题控制器是否正确,显示操作,如果 params[:id]=="Go to" 那么就留在原地。

具体问题#2:如果这是正确的,那么有没有办法向印象派发送一个:action_name(我会发送“go to”而不是它现在发送的默认“show”:

具体问题#3:如果不正确,那我该怎么办?也许去 Answers 控制器,去一个自定义的“go_to”?

TIA

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 web-services hyperlink impressions


    【解决方案1】:

    好的 - 我有一个解决方案(不确定它是否是最好的,但它有效)

    1. 上面的 question.rb 和 answer.rb 保持不变
    2. 为了统计answer show.html.erb页面的展示次数,我还是在answer_controller中使用,:

       impressionist(@answer)
      
    3. 为了计算我从 answer 重定向时的展示次数,我在 answer_controller 中创建了一个新的 def:

      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. questions\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还是和上面一样

    如果有人有更好的方法来做到这一点,请告诉;我不确定这种方式是否“犹太”

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多