2017-03-22 13 views
0

Railsでは、保存されたHTMLをレンダリングして、実際の絶対リンクで表示するにはどうすればよいですか?私はビューページからhtml_safeを呼び出すHTMLのチャンクを持っています。ブラウザでページを読み込むと、そのHTMLからのすべてのリンクが、元の宛先への絶対リンクではなく、自分のドメイン上の相対URLとしてレンダリングされます。ブラウザ(相対URL)でレンダリング何html_safeを使用してリンクを絶対URL(相対URLではなく)に変換する方法

<%= @company.about.html_safe %> 

ビューで

@company.about = "Some info about a <a href="http://google.com">company</a>." 

:私のコンソールで、またはフォームの結果として

companyについての情報です。

私はのようなブラウザ(絶対URL)でレンダリングするにはどうなるか:

companyに関するいくつかの情報。

PS - これは素晴らしいことではありません。しかし、それはユーザーが投稿したコンテンツではなく、自分のコンテンツだけです。そして、これらのリンクに対応するために私のモデルをより良く構築する方法を決めるまで、それは一時的なワークフローです。私は、html_safeがリンクに実際に/ w/r/tしているものに関する詳細な情報を見つけることができないことに、もっと驚いています。

+0

私はこの[リンク](http://apidock.com/rails/v4.2.7/String/html_safe)はあなたを助けると思うより。詳細については、文字列に 'html_safe'を使用しないでください。悪意のあるコードをあなたのコンテンツに暴露すると、XSS攻撃の危険があります。 – bananaappletw

答えて

1

私は(「私はどのように使用するか確認してください 'と)私のレールのアプリでこれをテストし、実行してきました:

@company.about = 'Some info about a <a href="http://google.com">company</a>.' 

<%= @company.about.html_safe %> 
+0

これでした!私はリンクの周りに二重引用符でフォームにHTMLを入力していました。もちろん、Railsは別の二重引用符をラップして、データベースの@ company.aboutに保存していました。それがレンダリングしようとしたとき、それは相対的に行きました。フォームのHTML入力を一重引用符で固定し、Railsが期待どおりに動作し、絶対URLをレンダリングするようになりました。このエラーに気づいてくれてありがとう! – supertext

0

生で試してみましたか?

<%= raw @company.about %> 

か何かので(それはテストされていない、私は、エビにこの方法を使用するかもしれない実行することができます。。

@company.about = "Some info about a #{<a href="http://google.com">company</a>}." 
+0

提案していただきありがとうございます!私は生を使って試していないが、私はやった。私はまったく同じ問題を抱えています。リンクは絶対URLとして表示するのではなく、相対URLにネストされます。 – supertext

+0

回答を更新しました。 –

+1

'raw'は' html_safe'に相当します。代わりに 'sanitize'を使用してください。 – bananaappletw

0

個人の提案あなたはマークダウンテキストとしてあなたabout列を保存することができます

次にredcarpetまたは何かのマークダウン宝石を使ってモデルコンテンツをhtmlテキストに翻訳してください。

より安全です(レッドカーペットはそれに対処します) omizable(マークダウン)。

関連する問題