gpt4 book ai didi

ruby-on-rails-4 - url_for 在 rails 4 中的 rake 任务发送的电子邮件中

转载 作者:行者123 更新时间:2023-12-02 04:51:49 24 4
gpt4 key购买 nike

我有一个抽佣任务,发送一天内玩家事件的每日摘要电子邮件。 (请参阅下面的示例代码。)如果我在我的控制台中运行 PlayerActivityMailer.activity_report.deliver,一切正常。但是,当我尝试调用 rake 任务时,出现以下错误:

rake aborted!
ActionView::Template::Error: arguments passed to url_for can't be handled.
Please require routes or provide your own implementation

经过一些研究,我发现在 Rails 4 中,它们完全削弱了 ActionView::Helpers::UrlHelper.url_for(http://apidock.com/rails/v4.1.8/ActionView/Helpers/UrlHelper/url_for - 注意 4.0.2 下的巨大红色减号).如果您查看源代码,就会看到我看到的错误 - 它不再需要选项。据我所知,该功能仍然存在于其他 url_for 中,例如 ActionDispatch::Routing::UrlFor 中的功能。此外,错误消息建议包括 Rails.application.routes.url_helpers

我尝试过的

  • 将 ActionDispatch::Routing::UrlFor 包含在 rake 任务(在任务内部)和邮件程序中(两者同时进行,也分别进行)
  • 在相同的位置和配置中包含 Rails.application.routes.url_helpers,包括和不包含 UrlFor

错误仍然存​​在。我的猜测是页面 View 仍然坚持使用 ActionView::Helpers::UrlHelper 版本的 url_for。我不认为我可以在 View 中包含实际的东西(即使我可以,它看起来很草率而且很老套)。

示例代码(经过严格 sanitizer )

配置/环境/开发.rb:

config.action_mailer.default_url_options = { host: 'localhost:3000' }

lib/tasks/player.rake:

namespace :player do
task :activity => :environment do
PlayerActivityMailer.activity_report.deliver
end
end

app/mailers/player_activity_mailer.rb:

class PlayerActivityMailer < ActionMailer::Base
def activity_report
@activities = PlayerActivity.all
mail(to: 'foo@bar.com', subject: 'activity report')
end
end

app/views/player_activity_mailer/activity_report.html.erb:

<% @activites.each do |activity| %>
Player: <%= link_to activity.player.name, player_url(id: activity.player.id) %>
...
<% end %>

我的 routes.rb 文件中还有一个模型 Player、resources :players,以及一个与 Player 关联的 PlayerActivity 类。

我目前正在使用(非常可怕的)解决方法 @base_url = Rails.configuration.action_mailer.default_url_options[:host] 在我的邮件操作中和 "http://# {@base_url}/players/#{activity.player.id}" 在我看来而不是 player_url 部分。

帮助!

最佳答案

您是否尝试过在 URL 中只传递您的播放器?像这样:

<% @activites.each do |activity| %>
Player: <%= link_to activity.player.name, player_url(activity.player) %>
<% end %>

关于ruby-on-rails-4 - url_for 在 rails 4 中的 rake 任务发送的电子邮件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27435693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com