У меня есть идея, и я не уверен, что это уже сделано. Прямо сейчас, чтобы разработчики, дружественные к поисковой системе URL, настраивали функцию to_param класса модели. Затем они вызывают функцию to_s, чтобы получить идентификатор elmenet.
Что делать, если я хочу создать URL не для модели, а для строки. Допустим, я создаю ссылку для поискового действия пост-контроллера. Единственная переменная в URL - это search_string. Так как я могу создать SEO ссылку для этой страницы поиска. Я знаю, как создавать ссылки и т. Д. И т. Д., Но моя проблема в том, что я хочу вызвать функцию для этой строки, такую как to_param или что-то в этом роде, чтобы создать строку seo, также в контроллере, чтобы выполнить поиск, и мне снова нужно гуманизировать эту строку. Итак, что я хочу, это:
В каждом представлении я не хочу использовать метод URL, чтобы сделать его дружественным
В каждом контроллере я не хочу вызывать какую-либо функцию для гуманизации строки обратно, это должно быть сделано маршрутизатором
В роутере:
match 'search/:string' => 'Post#search', :as => :search, before => some_before_router_helper_function, after => some_after_router_helper_function
В этих вспомогательных функциях я буду настраивать любые параметры, какие захочу, а затем буду гуманизировать все параметры обратно
пример до / после помощников маршрутизатора:
def some_before_router_helper_function
string = string.underscore.dasherize
end
def some_after_router_helper_function
param[:string] = param[:string].undasherize.un_underscore
end