0

十分に単純です。典型的なRESTfulRailsアプリを作成するときは、すべてのルートをアプリケーション内に保持していました。パスが外部パスにリンクすることはめったにありません。しかし、私たちがそれを行うとしたら、私は最善の方法は何であるか疑問に思います。

家の典型的なマッチング

match "home"=>"appcontroller#home"

外部URLをパスの変数に一致させていた場合。私たちは以下のようなことをするかもしれませんか?

最初の方法

Routes.rb

match "external"=>"http:/www.google.ie"

次に、html.erbで

<%= link_to 'Google', external_path %>

これは実際には合法的な方法ではありませんが、同様の方法が存在する可能性があることに注意してください。これは、レール内のパスを定義する現在の方法に非常に近いようですが、外部の踊り場があります。

2番目の方法

他の場所で行ったことは、外部URLのグローバル変数を作成し、それをリンクで使用することです。例えば。environment.rbまたはproduction.rbなどで

@ext_path="http:/www.google.ie"

次に、html.erbで

<%= link_to 'Google', @ext_path %>

要約すると。Railsで外部URLを使用する最良の方法は何ですか。パス?変数?他の?どんな入力でもありがたい

4

4 に答える 4

1

私は外部リンクをビューにのみ保持していました。このリンクは、アプリケーションのどの種類のロジックにも関連しておらず、単なるUI要素であるためです。

だから、この方法は私には最高のようです:

<%= link_to 'Google', "http://google.ie" %>

この要素を何度も使用する必要がある場合は、次のように、このコードをヘルパーに取り込むのが理にかなっています。

def search_engine_link
  link_to 'Google', "http://google.ie"
end

そして、私はそれがより複雑なロジックを導入するのにあまり良い場所ではないと本当に思います。

于 2012-06-13T11:28:51.597 に答える
1

おそらく、定数をラップしたアプリケーション全体のヘルパーを使用します。

テンプレートに定数、環境固有の値の定数を表示したくないため、ヘルパー。

ハッシュを使用してURLを保存する場合があります。これにより、URLがより緊密に結合され、環境全体のデフォルトが可能になり、必要に応じて環境ごとにオーバーライドされます。

xxx_pathヘルパーは、のルートで発生するようにメソッドを生成するために、シンボルを取得するか、ハッシュキーから生成することができますroutes.rb

于 2012-06-13T11:29:22.987 に答える
1

将来ローカルにするつもりの外部サイトへのリンクがあったので、これを行う必要があることに気づきました。

config/routes.rbRails 4では、これを以下に追加できます。

get '/contact', 
      to: redirect('http://www.example.com/contact.php'), 
      as: 'contact_us'

追加のリダイレクトを犠牲にして、次のように書くことができます。

<%= link_to "Contact us", contact_us_path %>
于 2015-10-30T22:27:53.517 に答える
0

301-リダイレクト

redirect(...)ルートファイルでの使用に関する注意 。Redirect特定のものである301リダイレクトを生成します、Googleはそれを次のように説明します...

検索エンジンの結果に表示されるページのURLを変更する必要がある場合は、サーバー側の301リダイレクトを使用することをお勧めします。これは、ユーザーと検索エンジンが正しいページに誘導されるようにするための最良の方法です。301ステータスコードは、ページが永続的に新しい場所に移動したことを意味します。

したがって、外部Webサイトへのリンクにルートで301リダイレクトを使用することは機能する可能性がありますが、そのリダイレクトで伝送されるステータス情報は正しくありません。

ウェブアプリのページを移動して、それについてGoogleインデックス(および他のすべての人)に伝えたい場合は、必ずを使用しredirect()てGoogleがインデックスを更新するようにしますが、標準の外部リンクに使用するのは最適ではありません。あなたのウェブアプリ。

于 2016-01-20T12:27:37.627 に答える