2016-03-21 16 views
0

私は私のポストのshowアクションにパラメータを渡すリンクを持っている:Railsは301でポストまたはリダイレクトするパラメータを渡しますか?

<%= link_to post_show_path(user.id, ref: user.ref) do %> 
    go to post 
<% end %> 

をしかし、これはURLを作成します:localhostを:?3000 /ポストREF = 1445461

明らかに、これは重複を作成します。それは私のSEOを殺す。その参照をコントローラに渡したいが、URLに表示しない。 、したがって、最初の

私が間違ってそれをやっている:[参照]それはのparamsを渡すことはありません

<%= link_to post_show_path(user.id), ref: user.ref, method: :post do %> 
go to post 
<% end %> 

:私は成功せず、メソッドのポストを使用してみましたか?私の構文は間違っていますか?そうでない場合、私は他の選択肢を持っていますか?はいの場合は、私のために書き留めてください。

私は301リダイレクトを行うことを考えていましたが、showアクション内の同じshowアクションにリダイレクトすると明らかにループが作成されます。私は "ショー"アクションに到達するために別のアクションを通過したくない。

どうすればいいですか? :)

答えて

0

デフォルトでは、htmlのリンク要素はpostではありません。 postリクエストを模倣できるリンクが必要な場合はrailsbutton_toヘルパーを使用できます。 button_toがボタンタグを生成しても、CSSスタイルを使用してリンクのように見えるようにすることができます。

詳細はUrlHelper#button_toを参照してください。

+0

私はこれを考えていましたが、それは本当にエレガントではありません。私はより適切な方法を見つけることを試みている;) – Ben

0

ただ、パスにrefのparam追加:

<%= link_to "go to post", post_show_path(user.id, ref: user.ref), method: :post %> 

をしかし、あなたの唯一の懸念は、SEO重複であれば、あなたにもGET要求に固執し、rel=nofollow directiveを使用することができます。

<%= link_to "go to post", post_show_path(user.id, ref: user.ref), rel: "nofollow" %> 

更新:必要なものが同じページ(SEOの観点から)を指す複数のURLを持っている場合、は標準URL、possiblを使用することがあります例えば、301リダイレクトでもよい。 hereまたはhere。 Google(および他のユーザー)は、このページを複数のURLで指し示しますが、1つのページとして索引付けします。

+0

それは私のために働かないだろう。これらのリンクにフォローを追加しないと、それらのリンクされたページはインデックスに登録されません。 – Ben

+0

ああ、私は今あなたが意味することを見ていると思う...私の更新答えをご覧ください。 – BoraMa

関連する問題