0

我有一个用于存储链接的表。我正在尝试使用 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 %>   

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

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 %>
4

1 回答 1

0

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

doc = Pismo::Document.new(params[:link][:url])
于 2013-01-27T22:49:47.417 回答