Techioz Blog

Rails 外部リンク [閉鎖]

概要

外部リンクを提供しようとしていますが、 http または https で始まる URL を指定しない限り、常に「localhost:3000」が先頭に追加されます。 www.google.com で始まるようにすると、外部リンクに移動することは拒否されますが、現在のページに結合されます。

 <div class="col-10 d-flex justify-content-center gap-2">
                <% @user.links.each do |link| %>
                  <% if link.url.length > 1%>
                   <div>
                    <%= link_to  link.url ,target: "_blank", class: "btn btn-primary" do %>
                        <span><%= link.title %></span>
                    <% end %>
                   </div>
                  <% end %>
                <% end %>
</div>

私のどこが間違っているのでしょうか?リンクからクリーンな URL を取得することを期待していました。しかし、localhost:3000/usersページにいると、localhost:3000/users/www.youtube.comが表示されます。

解決策


    def external_link(link)
      return link if link.include?('https://')
    
      link.prepend('https://')
    end

次に、コード内で以下を使用するだけです。


    link_to external_link(link), target: '_blank', class: 'btn btn-primary'