2

SEO に適した URL を持つバイリンガル サイトがあります。Ruby on Rails 2.3.10 を使用しています。

routes.rb断片:

map.connect 'order-jira-hosting/:option.html',
    :controller => 'order', :action => 'index', :locale => 'en'
map.connect 'order-jira-with-greenhopper-hosting/:option.html',
    :controller => 'order', :action => 'index', :locale => 'en', :greenhopper => true
map.connect 'zamow-hosting-jira/:option.html',
    :controller => 'order', :action => 'index', :locale => 'pl'
map.connect 'zamow-hosting-jira-z-greenhopper/:option.html',
    :controller => 'order', :action => 'index', :locale => 'pl', :greenhopper => true

ご覧のとおり:locale:greenhopperURL に「隠されています」。

現在のページの言語を変更できるようにスイッチがあります。私を参照してくださいviews/layouts/default.erb:

<%= link_to image_tag('icons/polish.png',  :alt => 'polski'),  { :locale => 'pl'}, :class => 'a' %>
<%= link_to image_tag('icons/english.png', :alt => 'English'), { :locale => 'en'}, :class => 'a' %>

コントローラーとアクションを指定しないだけなので、現在のコントローラーとアクションに別のロケールでリダイレクトされます。残念ながら、:greenhopper パラメータは失われます。

  1. 私は/order-jira-with-greenhopper-hosting/11.html
    ( :option => 11, :locale => 'en', :greenhopper => true)にいます
  2. /order-jira-hosting/11.html言語を切り替えるために生成されたリンクは/zamow-hosting-jira/11.html
    (:option => 11, :locale => 'pl' and 'en', :greenhopper => false)...
  3. ...しかし、そうあるべきで/order-jira-with-greenhopper-hosting/11.htmlあり、/zamow-hosting-jira-z-greenhopper/11.html
    (:option => 11, :locale => 'pl' and 'en', :greenhopper => true)

コントローラーに渡されるすべてのパラメーターが保持されるように link_to メソッドを使用する方法は? ご協力いただきありがとうございます。

4

1 に答える 1

3

送信先のハッシュをlink_toparams ハッシュに基づいて作成できます。これをそのまま渡すとlink_to、現在のページがリロードされます。各リンクHash.merge(other_hash)のキーをリセットするために使用できます。:locale

<%= link_to '<polish image />', params.merge({:locale => 'pl'}), :class => 'a' %>

現在、コントローラーとアクション キーparams 含まれていますが、それらは現在のページを生成したコントローラーとアクションであるため、リンクは、変更によって変更したパラメーターのみを使用して、ページの更新と同じように動作する必要がありますparams.merge

お役に立てれば!

PS: params.mergeparams ハッシュは変更しません。心配な場合は、マージの結果が新しいハッシュとして返されます。

于 2011-02-16T22:39:22.547 に答える