字符串插值在Sinatra重定向中不起作用

时间:2018-05-16 15:30:07

标签: ruby sinatra

当我使用这种方法时:

patch '/posts/:id' do
  post = Post.find(params[:id])
  post.update(name: params[:name], content: params[:content])
  redirect to '/posts/#{post.id}'
end

我收到错误ERROR URI::InvalidURIError: bad URI(is not URI?): http://localhost:9393/posts/#{post.id}

但是,当我硬编码id或连接字符串时,如下所示: redirect to '/posts/' + post.id.to_s

它工作正常。我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

在ruby中,单引号中声明的字符串文字不是内插,与双引文字不同:

"#{42}"
#⇒ "42"
'#{42}'
#⇒ "\#{42}"

因此,只需将单引号更改为参数中的双引号redirect to