Ruby on rails 如何正确地将查询字符串中的参数重定向到?(轨道4)

Ruby on rails 如何正确地将查询字符串中的参数重定向到?(轨道4),ruby-on-rails,ruby,url-redirection,url-parameters,query-parameters,Ruby On Rails,Ruby,Url Redirection,Url Parameters,Query Parameters,我正在用rails 4构建一个联系人表单创建应用程序 用户可以创建联系人表单(在应用程序中称为Contactable),在提交时创建联系人,并将联系人重定向到用户指定的URL 我正试图通过重定向将联系人的电子邮件地址作为查询字符串传递 在我当前的设置中,电子邮件确实会在查询字符串中传递,但它会丢失“@”符号 如果提交的联系方式带有电子邮件示例,如john@website.com,查询字符串的生成方式如下所示 http://website.com/?email=johnwebsite.com 如

我正在用rails 4构建一个联系人表单创建应用程序

用户可以创建联系人表单(在应用程序中称为
Contactable
),在提交时创建
联系人
,并将联系人重定向到用户指定的URL

我正试图通过重定向将联系人的电子邮件地址作为查询字符串传递

在我当前的设置中,电子邮件确实会在查询字符串中传递,但它会丢失“@”符号

如果提交的联系方式带有电子邮件示例,如john@website.com,查询字符串的生成方式如下所示

http://website.com/?email=johnwebsite.com
如您所见,它丢失了“@”字符。我怎样才能保留那个@角色

在联系人控制器的create函数中,下面是我如何构建查询字符串

respond_to do |format|
  if @contact.save
    if @contactable.redirect_url.present?
      format.html { redirect_to @contactable.redirect_url + '?email=' + @contact.email }
      format.json { render :show, status: :created, location: @contact }
    else
      format.html { redirect_to :back, notice: @contactable.thanks_message }
      format.json { render :show, status: :created, location: @contactable }
    end
  else
    format.html { render :new }
    format.json { render json: @contact.errors, status: :unprocessable_entity }
  end
end

谢谢你的意见

不应通过字符串连接手动构建URL,因为某些字符需要在有效URL中编码。如果可能,请使用接受参数的url帮助器

我不知道这是否有效(取决于可联系的
的实现):

如果不可能,请确保自己进行有效编码:

"#{@contactable.redirect_url}?email=#{ERB::Util.url_encode(@contact.email)}"

请出示
config/routes.rb
文件。先生,你真是个天才。谢谢
"#{@contactable.redirect_url}?email=#{ERB::Util.url_encode(@contact.email)}"