在我的路线中我正在做:
get 'category/products/:product_hash(/:ref)',
to: redirect('/new_path/products/%{product_hash}%{ref}', status: 301)
get 'new_path/products/:product_hash(/:ref)',
to: 'products#new', as: :new_product, defaults: {ref: 'print'}
它不能与%{ref}一起使用,它会返回:
“找不到密钥{ref}”
如何在重定向中创建“ ref ”可选参数?
感谢。
答案 0 :(得分:0)
您还希望为重定向路由提供ref
的默认值。请注意,如果您希望默认值为空,则空字符串是有效值。
您可能还想将/
移到括号外 - 可以使用尾部斜杠,移动它将有助于确保您的默认值正确传递(即,否则您需要附加/
,并且可能存在最终出现双斜杠的情况。所以你最终会得到类似的东西:
get 'category/products/:product_hash/(:ref)',
to: redirect('/new_path/products/%{product_hash}/%{ref}', status: 301), defaults: {ref: ''}
get 'new_path/products/:product_hash/(:ref)',
to: 'products#new', as: :new_product, defaults: {ref: 'print'}