小编Cru*_*nez的帖子

如何传递额外的数据来设计邮件程序?

我有一个可以处理许多子域的 rails 应用程序,并且我有多个使用不同域名运行的实时版本。这会导致 URL 介于

  • mywebsite.com
  • company1.mywebsite.com
  • company1.mytestwebsite.com

Devise有使用链接重置密码等的邮件程序。这些链接有时不正确并将我发送到不正确的网站,因为主机名有时与以下默认 URL 的主机名不同/config/environments/production.rb

config.action_mailer.default_url_options = { host: 'mywebsite.com' }
Run Code Online (Sandbox Code Playgroud)

如何request.host从控制器传递到设计邮件程序?

如果我有主机,我可以创建将用户发送到正确网站的链接

ruby-on-rails actionmailer devise

7
推荐指数
1
解决办法
1500
查看次数

Ruby range.reduce与哈希累加器

我有这个方法

def heights
  (60..68).reduce({}) { |h, i| h.merge!( { %(#{i/12}'#{i%12}") => i } ) }
end
Run Code Online (Sandbox Code Playgroud)

它返回高度的哈希值

{
  "5'0\"" => 60, "5'1\"" => 61, "5'2\"" => 62,
  "5'3\"" => 63, "5'4\"" => 64, "5'5\"" => 65,
  "5'6\"" => 66, "5'7\"" => 67, "5'8\"" => 68
}
Run Code Online (Sandbox Code Playgroud)

这就是我想要的.但是,我不喜欢使用这种merge!方法.我更倾向于使用hash[key] = value语法进行赋值:

def heights
  (60..68).reduce({}) { |h, i| h[%(#{i/12}'#{i%12}")] = i }
end
Run Code Online (Sandbox Code Playgroud)

但是这段代码会引发错误.我知道使用reduce,在你的管道中你可以命名你的累加器和元素.

我也明白这一点

sum = 0
(1..5).each { |i| sum += i }
Run Code Online (Sandbox Code Playgroud)

相当于

(1..5).reduce(0) { |sum, …
Run Code Online (Sandbox Code Playgroud)

ruby hash range

4
推荐指数
1
解决办法
675
查看次数

标签 统计

actionmailer ×1

devise ×1

hash ×1

range ×1

ruby ×1

ruby-on-rails ×1