Có cách nào để cung cấp giá trị mặc định cho người trợ giúp url/đường dẫn không?Định tuyến đường ray: Cung cấp giá trị mặc định cho người trợ giúp đường dẫn
Tôi có một phạm vi tùy chọn gói xung quanh tất cả các tuyến đường của tôi:
#config/routes.rb
Foo::Application.routes.draw do
scope "(:current_brand)", :constraints => { :current_brand => /(foo)|(bar)/ } do
# ... all other routes go here
end
end
tôi muốn người dùng có thể truy cập trang web bằng cách sử dụng các URL:
/foo/some-place
/bar/some-place
/some-place
Để thuận tiện, Tôi thiết lập một @current_brand
trong ApplicationController
tôi:
# 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
Vì vậy, rất tốt, nhưng bây giờ tôi phải sửa đổi tất cả các yêu cầu *_path
và *_url
để bao gồm thông số :current_brand
, mặc dù nó là tùy chọn. Điều này thực sự xấu xí, IMO.
Có cách nào để tôi có thể giúp những người trợ giúp đường dẫn tự động nhận trên @current_brand
không?
Hoặc có lẽ cách tốt hơn để xác định phạm vi trong routes.rb
?
Cảm ơn. Đây là giải pháp mà tôi đã kết thúc. Ở đó chúng tôi có rất nhiều gotchas, chẳng hạn như cần phải thiết lập điều này trong các bưu phẩm, và một hack để làm cho nó làm việc với rspec (dán trong câu trả lời của riêng tôi) – u2622
Ồ, vâng, tôi xin lỗi vì đã không chỉ ra điều này . Vui mừng bạn đã đề cập đến nó để hoàn thành. – CMW