2015-06-24 69 views
0

在我的邮件程序中,我生成了一个链接到我的注册表单,以便我可以将它包含在用户的电子邮件中。我想预先填写注册表单中的用户名和电子邮件地址。防止查询字符串中的转义字符

我创建一个实例变量@signup_query像这样:

@signup_query = "?name=" << 
       CGI.escape(@name) << 
       "&" << 
       "email=" << 
       CGI.escape(@email) 

但是,当我在查看通话link_to,Rails的编码查询字符串,它增加了“放大器;”到'&'。其结果是,我的params哈希有钥匙“放;电子邮件”,而不是关键“电子邮件”所以在我的注册看,我有这样的丑陋:

= f.email_field :email, class: 'form-control', :value => params['amp;email'] 

这工作,但我知道必须有一个更好的办法。

回答

1

在您的邮件试试这个

link_to "Sign up", my_signup_url(name: CGI.escape(@name), email: CGI.escape(@email)) 

有关的link_to使用this

+0

正如我在OP提到的更多详细信息,编码的link_to在查询字符串,因此这不会改变任何东西(虽然它是生成的查询字符串一个更好的方式)的符号。 –

+0

刚刚在我的rails控制台中试了一下,得到了它:'root_path(foo:CGI.escape('foo'),bar:CGI.escape('bar'))''我有一个很好的合成路径:'/?foo = foo&bar = bar&with&符号。你可以给我你用于不工作的'link_to'的代码吗? –

+0

对不起@Remi我前几天移动,不再在这方面工作。 –