Помощники 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вместо ожидаемого.

0 ответов

Другие вопросы по тегам