如何允许用户将网站链接放入text_area并显示可在Rails 4中单击的链接?

时间:2016-04-30 08:05:27

标签: html ruby-on-rails

用户可以对派对进行描述。 用户也可以键入任何链接作为描述。

但是,在用户保存后,他输入的链接无法点击。 我必须复制链接地址并粘贴到浏览器中才能访问该网站。

以下是views/parties/_form.html.erb

<%= form_for(@party, multipart: true) do |f| %>
  <div id="error_explanation">
      <ul><%= @party.errors.full_messages.first if @party.errors.any? %></ul>
  </div>

  <div class="field">
    <%= f.label :title %><br>
    <%= f.text_field :title, :class => "form-control", placeholder: 'Type title' %>
  </div>

  <div class="field">
    <%= f.label :location %><br>
    <%= f.text_field :location, :class => "form-control", placeholder: 'Type location' %>
  </div>

  <div class="field">
    <div class="form-group">
        <label>time</label>
        <%= f.datetime_select :time %>
    </div>
  </div>

  <div class="field">
    <%= f.label :description %><br>
    <a style="text-decoration:none;" title="Suggest!" data-toggle="popover" data-trigger="hover" data-placement="top" data-content="Ticket? Any Link? Tell me more!"><%= f.text_area :description, :class => "form-control", :rows => "3" %></a>
  </div>

  <div class="field">
      <%= f.label :image %><br>
      <%= f.file_field :image %>
  </div>
  <p>
  </p>
  <div class="actions">
    <%= f.submit "Let's post it", :class => "btn btn-primary", :id => "load", 'data-loading-text' => "Uploading...".html_safe %>
  </div>
  <p>
  </p>
<% end %>

如果用户输入任何链接,如何将链接转换为可点击链接?什么时候显示它的描述?

For example, if a user typed,
"Hi we have party tomorrow at 12:00 pm.
Also more information is at www.facebook.com/samplepartybrabrabra
ticket is $5 per person."

2 个答案:

答案 0 :(得分:0)

您可以使用variable_name.html_safe来解释variable_name中的文字并将其呈现为HTML。如果variable_name来自用户生成的内容,请务必谨慎。

答案 1 :(得分:0)

Tl; dr 使用rails_autolink gem中的auto_link视图帮助器。

答案很长您基本上有两种选择:

  1. 用户必须输入有效的HTML链接,然后可以像Anthony建议的那样呈现为HTML。您可以使用markdown或wysiwyg编辑器使用户更容易。

  2. 您让用户只在文本中输入一个URL(这就是您现在正在做的事情),您必须解析文本并用HTML链接替换每个URL。

  3. 就个人而言,我选择#2选项,特别是因为rails_autolink gem很容易。您可以保留原样。您只需稍后打印用户输入:

    <div class="party-description">
      <%= auto_link(@party.description) %>
    </div>

    auto_link会处理所有链接。