gpt4 book ai didi

ruby - Rails 路由 : Giving default values for path helpers

转载 作者:数据小太阳 更新时间:2023-10-29 07:10:50 26 4
gpt4 key购买 nike

有什么方法可以为 url/path 助手提供默认值吗?

我有一个可选范围环绕我的所有路线:

#config/routes.rb
Foo::Application.routes.draw do

scope "(:current_brand)", :constraints => { :current_brand => /(foo)|(bar)/ } do
# ... all other routes go here
end

end

我希望用户能够使用这些 URL 访问网站:

/foo/some-place
/bar/some-place
/some-place

为了方便起见,我在我的 ApplicationController 中设置了一个 @current_brand:

# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_filter :set_brand

def set_brand
if params.has_key?(:current_brand)
@current_brand = Brand.find_by_slug(params[:current_brand])
else
@current_brand = Brand.find_by_slug('blah')
end
end

end

到目前为止一切顺利,但现在我必须修改所有 *_path*_url 调用以包含 :current_brand 参数,即使它是可选的。这真的很难看,IMO。

有什么方法可以让路径助手自动获取 @current_brand 吗?

或者在 routes.rb 中定义范围的更好方法?

最佳答案

我想你会想做这样的事情:

class ApplicationController < ActionController::Base

def url_options
{ :current_brand => @current_brand }.merge(super)
end

end

每次构造 url 时都会自动调用此方法,并将其结果合并到参数中。

有关这方面的更多信息,请查看:default_url_options and rails 3

关于ruby - Rails 路由 : Giving default values for path helpers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9931451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com