Как я могу удалить https и http из ruby ​​на рельсах - PullRequest
1 голос
/ 25 апреля 2019

Мне нужно удалить «https» и «http» из URL-адреса из моей формы, чтобы показать изображение позже, я получил форму, в которую я включил заголовок и URL-адрес, например:

Форма:

<%= form_for( @article, :html => { class: "form-test", role: "form"}) do |f| %>      
    <%= f.label :Titulo %>
    <%= f.text_field :title%>

    <%= f.label :Imagen%>
    <%= f.text_field :img%>

     <%= f.submit "Post"%>
<% end %>

Вид:

<div class="header">
    <%= image_tag("https://#{@article.img}") %>
    <%= @article.title%>
</div>

Я ищу вариант, как мне удалить https, я буду очень признателен, если вы сможете мне сказать.

Ответы [ 2 ]

3 голосов
/ 25 апреля 2019

Ruby's URI возможно?

~ ᐅ irb                                                                                                                                                                                                                         [ruby-2.5.3] 
2.5.3 :001 > uri = URI('https://my.domain.com/my_image.png')
 => #<URI::HTTPS https://my.domain.com/my_image.png> 
2.5.3 :002 > [uri.hostname, uri.path].join
 => "my.domain.com/my_image.png" 

Вы можете определить помощника для этого:

def url_without_scheme(url)
  uri = URI(url)
  uri.hostname + uri.path
end

Вид:

<div class="header">
  <%= image_tag(url_without_scheme @article.img) %>
  <%= @article.title%>
</div>
1 голос
/ 25 апреля 2019

Вы можете удалить с помощью регулярного выражения:

str = "https://foobar.com or http://foobar.com"
str.gsub(/https:\/\/|http:\/\//, "")
=> "foobar.com or foobar.com"

более длинный пример

str = "https://abcdefghijklmnopqrstuvwxyz.com or http://abcdefghijklmnopqrstuvwxyz.com"
str.gsub(/https:\/\/|http:\/\//, "")
=>"abcdefghijklmnopqrstuvwxyz.com or abcdefghijklmnopqrstuvwxyz.com"

Вы можете просто сделать это в своем представлении

<%= image_tag("https://#{@article.img.gsub(/https:\/\/|http:\/\//, '')}") %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...