我正在使用rails 4构建联系表单创建应用程序。
用户可以创建联系表单(在应用程序中称为Contactable
),提交时会创建Contact
并将联系人重定向到用户指定的URL。
我正在尝试通过重定向将联系人的电子邮件地址作为查询字符串传递。
使用我当前的设置,电子邮件确实会在查询字符串中传递,但它会丢失“@”符号。
如果通过john@website.com等示例电子邮件提交联系表单,则查询字符串会像这样构建...
http://website.com/?email=johnwebsite.com
如你所见,它失去了'@'字符。我怎么能保留@字符?
在Contact控制器的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
感谢您的任何意见!
答案 0 :(得分:0)
您不应该通过字符串连接手动构建网址,因为某些字符需要在有效的网址中进行编码。如果可能的话,使用带参数的url helper。
我不知道这是否有效(取决于contactable
的实施):
@contactable.redirect_url(email: @contact.email)
如果无法做到这一点,请确保自己进行有效编码:
"#{@contactable.redirect_url}?email=#{ERB::Util.url_encode(@contact.email)}"