0

リンクを保存するためのテーブルがあります。URLからメタデータを取得してテーブルに保存するためにpismogemを使用しようとしています。

私のリンクコントローラーには、beforeフィルターがあります:

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

これは、新しいアクションと作成アクションで呼び出されます。私の見解では、インスタンス変数を非表示フィールドに渡します。

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

これは、URLを文字列としてハードコーディングすると機能しますが(上記のGoogleの例のように)、次のようにurlパラメータを渡すと失敗します。

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

エラー:未定義のメソッド `gsub! ' nilの場合:NilClass

レールはかなり新しいので、ここで愚かなことをしていると思います。どんな助けでも大歓迎です!

<%= 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 に答える