私の問題は、2つのコントローラー(記事とニュース)があることです。記事を編集すると、更新がdbに保存されます。しかし、ニュースで同じことをしようとすると、このエラーが発生します
Started PUT "/1" for 127.0.0.1 at 2012-11-21 10:30:17 +0200
Processing by NewsController#index as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"OyzVdh0yLz4fGAPwU+tKzuy8B5Wb0exV4+4OjE5UHt8=", "news"=>{"title"=>"fsf", "text"=>"<p>fsdfsfds</p>"}, "commit"=>"Update News", "locale"=>"1"}
1 translation's not available
コードルート でこれら2つのアクションの間に違いは見られませんでした
scope '(:locale)' do
get 'articles/autocomplete_article_title'
resources :users
resources :news do
end
resources :articles do
end
# match "/news*tail" => 'news#index'
root :to => 'News#index', as: 'news'
end
助けてください!
よろしくお願いします!
アップデート1
エラーはルーティングにあるようです(これはエラーをスローする場所であるため)
def set_locale_from_params
if params[:locale]
if I18n.available_locales.include?(params[:locale].to_sym)
I18n.locale = params[:locale]
else
flash.now[:notice] =
"#{params[:locale]} translation\'s not available"
logger.error flash.now[:notice]
end
end
end
def default_url_options
{locale: I18n.locale}
end
アップデート2
そしてこれはエラーが発生したときのパラメータのダンプです。ここにidのフィールドはありません
{"utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"OyzVdh0yLz4fGAPwU+tKzuy8B5Wb0exV4+4OjE5UHt8=", "news"=>{"title"=>"fsf", "text"=>"<p>fsdfsfds</p>"}, "commit"=>"Update News", "controller"=>"news", "action"=>"index", "locale"=>"1"}
アップデート3は、ここのようにルート
を設定しようとしましたhttp://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-url-paramsは役に立ちませんでした。scope '(:locale)', :locale => /en|ru/ do
アップデート4
の問題は、form_forが/:id urlを指していることです。これは、ルートルートによって上書きされます。したがって、form_forをに変更しform_for(@news, url: news_path(@news))
、ここにローカルに配置する必要があります...その方法を検索します