rails将外部URL中的元数据插入表中

时间:2013-01-27 21:52:29

标签: ruby-on-rails gem

我有一个用于存储链接的表。我正在尝试使用pismo gem从URL中获取元数据,并将其保存到表中。

在我的链接控制器中,我有一个前置过滤器:

  def pismo_grab_meta_data
    doc = Pismo::Document.new("http://google.com/")
    @link_title = doc.title
  end

在new和create动作中调用它。在我看来,我在隐藏字段中传递实例变量。

  <%= f.hidden_field :name, :value => @link_title %>   

当硬编码将字符串作为字符串(如上面的google示例)时,这会有效,但是当我将url params传递给它时失败,如下所示:

doc = Pismo::Document.new(params[:url])

错误:未定义的方法`gsub!'为零:NilClass

对rails很新,所以我假设我在这里做了些蠢事。非常欢迎任何帮助!

<%= form_for(@link, :html => { "data-behavior" => "submit-form"}) do |f| %>
  <% if @link.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@link.errors.count, "error") %> 
        prohibited this link from being saved:
      </h2>
      <ul>
      <% @link.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <%= f.hidden_field :name, :value => @link_title %>
  <div class="field urlsaver">
    <%= f.label :url %><br />
      <% if params[:link].present? %>
        <%= f.text_field :url, :value => params[:link] %>
      <% else %>
        <%= f.text_field :url %>
      <% end %>
  </div>
  <div class="actions">
    <%= f.submit 'Save', :class => 'btn' %>
  </div>
<% end %>

1 个答案:

答案 0 :(得分:0)

您要查找的值应为params [:link] [:url]。 将行更改为:

doc = Pismo::Document.new(params[:link][:url])