Sinatra 关于 sinatra 路由问题

metal · 2012年08月23日 · 最后由 5long 回复于 2012年08月23日 · 2818 次阅读
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] ) 二不?

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