Я создаю приложение менеджера закладок, которое дает список ссылок. Каждая ссылка имеет один или несколько тегов. Я хочу дать пользователю веб-сайта возможность фильтровать ссылки по тегу. Пользователь должен иметь возможность ввести имя тега, а затем нажать кнопку «Фильтровать по тегу». Это должно содержать список только ссылок, имеющих этот тег.Как вы разбираете именованный параметр в маршрут в Синатре?
Таким образом, мой HTML форма выглядит следующим образом:
<form action='/tags/:name’ method='get'>
<label for='name'>
Tag:
<input type='text' name='name'>
</label>
<input type='submit' value='Filter by tag'>
</form>
Мой контроллер выглядит следующим образом:
class BookmarkManager < Sinatra::Base
get '/tags/:name’ do
tag = Tag.first(name: params[:name])
@links = tag ? tag.links : []
erb :'links/index'
end
end
Я побежал rackup и попытался отфильтровать ссылки с помощью тега. Когда я набрал и отправил имя тега, это имя было «: name», а не напечатанным текстом. В результате вместо отображения ссылок, связанных с определенным тегом, ссылки не показывались.
Спасибо, что Харпер работает, но я пытался сделать мой контроллер более RESTful. Таким образом, я хотел бы, чтобы мой маршрут относился к определенному тегу, когда я фильтрую свои ссылки этим тегом. –
Если вы хотите, чтобы ваше приложение соответствовало стандарту RESTful, тогда ваш бэкэнд должен возвращать JSON или XML, который анализируется получателем на лицевой стороне, а затем отображается в представлении. См. Https://restful-api-design.readthedocs.org/en/latest/ –
Не могли бы вы принять мой ответ, так как я решил вопрос, как вы его просили (ничего не упоминалось о REST)? –