假设我有一个控制器操作,应该会导致将新路由添加到路由表中:
def make_route
vanity_url = params[:vanity_url]
vanity_redirect = params[:vanity_redirect]
return render json: { status: 400 } unless vanity_url && vanity_redirect
Rails.application.routes.draw do
get vanity_url, to: redirect(vanity_redirect)
end
render json: { status: :ok }
end
当我触发此操作时,它确实添加了新路线,但完全删除了表的其余部分!在绘制新表时,如何在原始路线之前添加、追加或以其他方式映射?
在产品的环境中,Rails 加载配置一次并且不监听更改。如果您想构建自定义路线,您必须重新加载路线 https://apidock.com/rails/Rails/Application/reload_routes!每次添加新路线时:
Rails.application.reload_routes!
此外,这不会将新路由附加到您的路由文件中,并且任何服务器重新启动都会将您的路由器重置为默认值。但是您可以将新路由保存到数据库并在服务器启动时重新创建它们或在内部构建路由routes.rb
来自 ENV 变量。
但如果你想使用draw
并且只需要一次新路线:
Rails.application.routes.disable_clear_and_finalize = true #add this line
Rails.application.routes.draw do
#new route
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)