【问题标题】:Dynamic url in liquid template - Ruby On Rails液体模板中的动态 url - Ruby On Rails
【发布时间】:2020-02-11 11:05:29
【问题描述】:

我正在尝试向电子邮件添加动态链接。使用流动模板获取和呈现电子邮件的正文。

我添加了如下动态链接,但不确定它是否是最优雅的方式。在这方面的任何帮助都会很棒。下面是代码的相关部分。

class UserDrop < Liquid::Drop
  def search_path
    ActionController::Base.helpers.content_tag(
      :a,
      @user.email,
      :href => Rails.application.routes.url_helpers.admin_users_url(
        search: @user.email,
        host: Rails.application.config.action_mailer.default_url_options[:host])
    )
  end
end

液体模板代码

Email: {{user.search_path}}

【问题讨论】:

    标签: ruby-on-rails liquid


    【解决方案1】:

    你真的可以用一点继承来清理它:

    class BaseDrop < Liquid::Drop
      # shamelessly stolen from
      # http://hawkins.io/2012/03/generating_urls_whenever_and_wherever_you_want/
      class Router
        include Rails.application.routes.url_helpers
    
        def self.default_url_options
          ActionMailer::Base.default_url_options
        end
      end
    
      private
      def router
        @router ||= Router.new
      end
    
      def helpers
        @helpers ||= ActionController::Base.helpers
      end
    end
    
    class UserDrop < BaseDrop
      def search_path
        helpers.link_to(@user.email, router.admin_users_url(search: @user.email))
      end
    end
    

    【讨论】:

    • 感谢@Max 的解决方案
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多