Rails: как добавить внешнюю ссылку в приложение rails

#ruby-on-rails #link-to

#ruby-on-rails #ссылка на

Вопрос:

У меня есть строка, в которую пользователи вводят URL-адрес, который позже отображается в index.html . Как я могу превратить это в рабочую внешнюю ссылку? Прямо сейчас ссылка отображается должным образом (например www.facebook.com/tester ), но когда я нажимаю на ссылку, я получаю сообщение «маршрут не совпадает» /www.facebook.com/tester » ошибка маршрутизации. Я попробовал user.facebook.link, но это не сработало.

Я также попытался добавить href=» «, но безуспешно.

 <%= link_to nil, user.facebook %>
  

Комментарии:

1. в сообщении об ошибке говорилось, что маршрут не соответствует чему?

2. @Andy маршрут не совпадает «/www.facebook.com/tester «. Я предполагаю, что Rails считает, что ссылка принадлежит внутреннему маршруту. Однако это не то, что я ищу. Ссылка должна идти на другой сайт, в данном случае на Facebook.

3. Если в нем нет части «http: //», он будет считать, что это относительная ссылка. Почему бы просто не использовать обычный <a ...> тег или помощник, который оборачивает его?

4. @DaveNewton Разве мне не нужен <% %> для встроенного ruby, чтобы отобразить строку, которую они ввели?

5. Конечно, но это не значит, что вам нужно использовать помощник по ссылкам (хотя вы, вероятно, можете). Я держу их отдельно, чтобы избежать когнитивных накладных расходов (в целом). <a href="http://facebook.../<%= user.facebook %>">Go to facebook</a>

Ответ №1:

Как упоминалось @Mischa, вы можете добавить:

 <%=link_to nil, "http://#{user.facebook}"%>
  

для добавления протокола в link.

Если вам нужно присвоить ссылке метку, скажем, , Facebook , вы можете использовать ее:

 <%=link_to 'Facebook', "http://#{user.facebook}"%>`
  

Вот и все.

Я надеюсь, что это поможет

Комментарии:

1. Что, если входные данные варьировались от доменов с «http:» и тех, которые начинались с «www»? «Http:» добавит еще один «http:» к некоторым доменам и не будет работать. Есть ли способ обойти это?

2. Вы можете использовать метод сканирования, чтобы проверить, содержится ли «http» или нет. Например: user.facebook.scan(^http) должен возвращать пустой массив, если строка не начинается с http.