Ruby on rails 液体模板中的动态url-RubyonRails
我正在尝试向电子邮件添加动态链接。电子邮件的主体是使用液体模板获取和呈现的 我添加了如下动态链接,但不确定这是否是最优雅的方式。这方面的任何帮助都将是巨大的。以下是代码的相关部分Ruby on rails 液体模板中的动态url-RubyonRails,ruby-on-rails,liquid,Ruby On Rails,Liquid,我正在尝试向电子邮件添加动态链接。电子邮件的主体是使用液体模板获取和呈现的 我添加了如下动态链接,但不确定这是否是最优雅的方式。这方面的任何帮助都将是巨大的。以下是代码的相关部分 class UserDrop < Liquid::Drop def search_path ActionController::Base.helpers.content_tag( :a, @user.email, :href => Rails.applicat
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
您可以通过一点继承来彻底解决这个问题:
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 BaseDrop
class UserDrop
感谢@Max提供的解决方案
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