0

このコードはビューから実行され、機能します。

<% @metaTags = OpenGraph.fetch('http://www.someurl.com') || nil %>
<% if @metaTags != nil %>
      postTitle = truncateStr('<%= @metaTags.title %>', 72);
<% end %>

同じことをしたいのですが、http://www.someurl.comこのようにjavascriptで計算されたパラメーターとして渡します

試行 1

var someURL = ... (compute value);
setCookie("someURL", someURL, 10000);
<% @metaTags = OpenGraph.fetch(cookies[:someURL]) || nil %>
<% if @metaTags != nil %>
      postTitle = truncateStr('<%= @metaTags.title %>', 72);
<% end %>

うまくいきません。

試行 2

var someURL = ... (compute value);
setCookie("someURL", someURL, 10000);
<% readPostURL %>
<% if @metaTags != nil %>
      postTitle = truncateStr('<%= @metaTags.title %>', 72);
<% end %>

そしてコントローラーで

private
def readPostURL
  @metaTags = OpenGraph.fetch(cookies[:postURL]) || nil
end
helper_method :readPostURL

それもうまくいきません。

どちらのシナリオでも、Cookie に問題があるようです。javascript を使用してビューから OpenGraph.fetch(parameter) を実行する方法はありますvariableか?

4

2 に答える 2

1

そのように簡単に Javascript で計算されたものを Ruby コードに混ぜることはできません。おそらく ExecJS のようなものを使用して、Ruby からサーバー側のJavascript コードを呼び出すことができますが、それはビュー コードではありません。そして、それはおそらく価値があるよりも多くのトラブルになるでしょう.

オプションは次のとおりです。

  • someURLビューをレンダリングするときに Ruby で計算する
  • クライアント側のメタタグを把握する
  • Javascript から Ruby サーバーへの AJAX 呼び出しを行い、これらのメタタグを取得します。
于 2014-06-27T15:45:10.613 に答える