3

Rails 3.2サーバーでルートを書き直しているので、言語はURLの一部です。私のroutes.rbファイルは次のようなものです。

scope ":lang", :lang => /es|fr|it|pt|en|de/ do
    resources :users
end

ほとんどすべてのURLは、言語文字列を追加することで完全に機能します。

http://mydomain/es/somecontroller/someaction

問題はshowアクションにあり、リンクは機能しません。この行:

<%= link_to "Show", @my_user %>

次のような「ルーティングエラー」が発生します。

No route matches {:action=>"show", :controller=>"users", :lang=>##User serialization##}

私は何が間違っているのですか?

編集:わかりました、解決策が見つかりました。ケージと少しの研究のおかげで解決策があります。

次のようなApplicationControllerのメソッドのみが必要です。

def self.default_url_options
  { :lang => FastGettext.locale }
end

そして、すべてが完璧に機能します!! リンクを書き換える必要はまったくありません。

4

1 に答える 1

1

表示、編集、破棄の場合は、オブジェクトの :id をパスに渡す必要があります。そうしないと、エラーが表示されます。例えば

 <%= link_to "Show", user_path(@my_user.id) %>

このリンクにアクセスすると、ルーティングの場合に大いに役立ちますhttp://guides.rubyonrails.org/routing.html

于 2012-05-16T18:10:06.213 に答える