Rails 字符串

vivayang · 2013年02月27日 · 最后由 zj0713001 回复于 2013年02月27日 · 2671 次阅读

失败的案例:cmdp.com 是本地测试地址 @link = params[:link] redirect_to "http://www.cmdp.com" + @link 最后会跳到http://www.cmdp.com

如果是@link = "users/new" redirect_to "http://www.cmdp.com" + @link 则可以正确到达 http://www.cmdp.com/users/new

什么地方有问题呢? 尝试过将@link = @link.to_s 也不行

你的 params[:link] 是什么啊

#2 楼 @vivayang 或许你可以先把 "http://www.cmdp.com" + @link 打印出来看看

params[:link] 应该不是字符串对象, “+”在连接字符串的时候 根据两个值的不同 执行了不同的方法。 包括 to_s 很可能解释成其他的东西了

#2 楼 @vivayang 我按照你的情况测试了一下。

Started GET "/blogs/new?link=blogs/new" for 127.0.0.1 at 2013-02-27 12:45:32 +0800
Connecting to database specified by database.yml
Processing by BlogsController#new as HTML
  Parameters: {"link"=>"blogs/new"}
Redirected to http://www.buychina.devblogs/new
Completed 302 Found in 0ms (ActiveRecord: 0.0ms)
"http://www.buychina.dev/blogs/new"


Started GET "/blogs/new?link=/blogs/new" for 127.0.0.1 at 2013-02-27 12:45:45 +0800
Processing by BlogsController#new as HTML
  Parameters: {"link"=>"/blogs/new"}
Redirected to http://www.buychina.dev/blogs/new
Completed 302 Found in 0ms (ActiveRecord: 0.0ms)
"http://www.buychina.dev"

你可以看到,实际上 redirect 了两次,第一次是正确的,第二次由于没有带参数,所以 redirect to root

建议楼主把代码贴全...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号