Rails通过GET发送电子邮件

时间:2014-01-29 11:21:53

标签: ruby ruby-on-rails-3

我有路线设置:

get 'e/:email' => "static#home"

所以在控制器中我想通过params[:email]

收到电子邮件

不知怎的,这不起作用,因为我打开了它所说的网址:

No route matches [GET] "/e/test%40gmail.com"

你将如何做到这一点?干杯!

1 个答案:

答案 0 :(得分:1)

试试这个:

get 'e/:email' => "static#home", :format => false, :constraints => { :email => /[^\/]+/ }

说明:

默认情况下,rails不允许在参数中使用.

我只是尝试在我自己的rails应用程序中实现等效路由,并且它有效。 params hash看起来像这样:

{"controller"=>"pages", "action"=>"home", "email"=>"test@gmail", "format"=>"com"}

它仍然适用于我的原因是默认情况下,rails在.是格式参数之后假设任何内容(通常使用格式参数,例如,指定你想要json - 例如。{{ 1}})。

由于您收到错误,因此您必须设置一些内容以忽略默认包含的example.com/my_controller/index.json参数。

所以,你应该能够重现我得到的结果(即匹配的路线,但是format param中的.com部分,而不是format param)以下内容:

email

但要解决您的问题,并继续排​​除get 'e/:email' => "static#home", :format => true param,但要包含format及其后的所有内容,作为. param的一部分,您需要通过通过最后一个选项email,它基本上只允许在电子邮件参数中使用斜杠。

此处有更多信息:Why do routes with a dot in a parameter fail to match?