Link_to目标'_blank'与控制器动作相结合

时间:2016-09-13 16:59:32

标签: ruby-on-rails

我有代码:

= link_to image_tag(image_info), 'web-site', :target=>'blank' 

非常适合在新标签页中打开网站但

图片是我正在托管的广告,我还要记录图片被点击的事实以及时间和其他细节。

有没有办法将link_to,target'_blank'与对控制器操作的调用结合起来?

3 个答案:

答案 0 :(得分:0)

您可以使用Javascript实现这一目标,并记录定义动作所需的点击时间,这将节省时间和其他细节。

$rootScope.myapp.queue = {'A1':{'Name':'John','ID':'A1'},'A2':{'Name':'Anna','ID':'A2'}};

JS:

= link_to image_tag(image_info), 'web-site', class: 'save-time'

希望有所帮助!

答案 1 :(得分:0)

一种非Javascript的方法是创建一个控制器动作:

  1. 无论你想做什么跟踪
  2. 重定向到您的外部网站。
  3. 然后设置你的链接,以便它直接调用你的控制器动作。

    作为一个非常简单的例子,可以从更复杂的方面受益:

    路线

    # config/routes.rb
    # [...]
    get 'tracking/:url_id', to: 'tracking#redirection', as: 'track_redirection'
    

    控制器

    # app/controllers/tracking_controller.rb
    class TrackingController
    
      def redirection
        url = {
          1 => 'google.com',
          2 => 'bbc.com'
        }[params[:url_id]]
    
        TrackingClass.new(url, current_user).track
    
        redirect_to url
      end
    end
    

    视图

    = link_to image_tag(image_info), track_redirection_path(1), target: 'blank'
    

    这将创建一个指向/tracking/1的内部链接,然后您的控制器将重定向到正确的网址。

答案 2 :(得分:0)

您可以链接到控制器方法路径

link_to "controller/method", target: 'blank', method: :post do
  image_tag image_path("whatsapp-icon.svg")
end

路线

# config/routes.rb    
resources :controller do
  post "method" => "controller#method"
end