我正在尝试在我的 Rails 应用程序中实现一个虚 URL 系统。在 localhost:3000 服务器上,实现运行良好。我有一个系统,可以通过其名称请求配方,但如果通过 ID 请求,也可以回退到默认行为。无论名称实际保存为什么,此实现对于小写和大写名称都适用。
例如
http://localhost:3000/recipes/pizza
和
http://localhost:3000/recipes/Pizza
即使记录保存为“披萨”,也会导致相同的页面。
然而:
http://www.test-server.com/recipes/pizza
和
http://www.test-server.com/recipes/Pizza
不会弹出相同的页面。
我的问题是,为什么我的本地主机服务器上忽略了大写。此外,在线实施是否可以优雅地处理这个问题?
这是我目前如何实现虚 URL 的一些相关代码。
#models/recipe.rb
def to_param
name.parameterize
end
# relevant code from routes.rb
match '/recipes/:name' => 'recipes#show'
# relevant code from controllers/recipe_controller.rb
def show
name = params[:id].gsub("-", "\s")
@recipe = Recipe.find_by_name(name)
@recipe = Recipe.find(params[:id]) if @recipe.nil?
puts @recipe.ingredients.inspect
puts @recipe.amounts.inspect
respond_to do |format|
format.html # show.html.erb
format.json { render json: @recipe }
end
end
任何见解将不胜感激。