液体模板中的动态 url - Ruby 在 Rails
Dynamic url in liquid template - Ruby On Rails
我正在尝试向电子邮件添加动态 link。电子邮件正文是使用液体模板获取和呈现的。
我添加了动态 link 如下,但不确定这是否是最优雅的方式。在这方面的任何帮助都会很棒。下面是代码的相关部分。
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}}
你真的可以通过继承来解决这个问题:
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
我正在尝试向电子邮件添加动态 link。电子邮件正文是使用液体模板获取和呈现的。
我添加了动态 link 如下,但不确定这是否是最优雅的方式。在这方面的任何帮助都会很棒。下面是代码的相关部分。
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}}
你真的可以通过继承来解决这个问题:
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