Sinatra 关于 sinatra 路由问题

metal · August 23, 2012 · Last by 5long replied at August 23, 2012 · 2818 hits
get 'post/:id' do
...
end

get 'post/new' do
 .....
end

访问 post/new

ActiveRecord::RecordNotFound at /post/new

应该是找/post/:id 了,有什么方法可以解决。rails 里我记得可以吧位置调一下可以正确识别,sinatra 看起来不行。

所以我的应用看起来是这样的/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] ) 二不?

You need to Sign in before reply, if you don't have an account, please Sign up first.