get 'post/:id' do ... end get 'post/new' do ..... end
访问 post/new
ActiveRecord::RecordNotFound at /post/new
应该是找/post/:id 了,有什么方法可以解决。rails 里我记得可以吧位置调一下可以正确识别,sinatra 看起来不行。
所以我的应用看起来是这样的/users/show/:id
/users/show/:id
看起来是顺序换一下就行了。
#2 楼 @hooopo 不调整顺序就无法解决么。
#3 楼 @metal 加条件,限制:id 为数字!不懂 sinatra,不过应该是可以的。
试试
get %r{^/post/(?<id>\d+)/?$} do ... end get '/post/new' do ..... end
#3 楼 @metal 不调整顺序,会先进post/:id,你需要处理一下 redirect url(:post, params[:id].to_sym) if %w( new create ).include?( params[:id] ) 二不?
post/:id
redirect url(:post, params[:id].to_sym) if %w( new create ).include?( params[:id] )
文档里有:http://www.sinatrarb.com/intro.html#Passing