Помощники URL не могут распознавать дополнительные пользовательские динамические сегменты в маршрутах
Я использую Rails 4.2. В драгоценном камне есть маршрут, определенный как
get 'book/:id', to: 'book#show', as: book
Я хотел бы добавить дополнительный динамический сегмент в пользовательском маршруте, поэтому в файле rout.rb в моем приложении я
get ':language/book/:id', to: 'book#show', as: language_book
Затем в моем контроллере я попытался вызвать помощника URL
language_book_url language: :en, id: 3
Я ожидаю получить URL как http://host:port/en/book/3
Однако вместо этого я получаю http://host:port/book/3?language=en
, Кажется, я не могу использовать помощника с этим дополнительным настраиваемым динамическим сегментом. Можно ли получить желаемый путь с новой переменной динамического сегмента? Спасибо!
Усманали дал ответ в комментарии, чтобы использовать language_book_url :en, 3
, Но что, если я хочу получить смесь динамических сегментов и параметров строки запроса? Так что мой целевой URL http://host:port/en/book/3?barcode=1234
, Как я могу вызвать помощника по URL? Призыв к помощнику, как language_book_url('en', 3, barcode: 1234)
будет производить http://host:port/book/3?language=en&barcode=1234
вместо ожидаемого.