2012-11-21 1 views
0

Mon problème est que j'ai 2 contrôleurs (articles & nouvelles), quand je édite des articles mes mises à jour sont enregistrées en DB. mais lorsque je tente de faire la même chose avec des nouvelles que je reçois cette erreurrails mélange id et paramètres régionaux de poste

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 

et je ne vois aucune différence entre ces deux actions dans le code
routes

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 

S'il vous plaît aider!
Merci beaucoup d'avance!

Mise à jour 1
L'erreur semble être dans le routage (parce que c'est le lieu qui jette l'erreur

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 

Mise à jour 2
Et ce dump de params en cas d'erreur. aucun champ pour id ici

{"utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"OyzVdh0yLz4fGAPwU+tKzuy8B5Wb0exV4+4OjE5UHt8=", "news"=>{"title"=>"fsf", "text"=>"<p>fsdfsfds</p>"}, "commit"=>"Update News", "controller"=>"news", "action"=>"index", "locale"=>"1"} 

Mise à jour 3
essayé de définir scope '(:locale)', :locale => /en|ru/ do dans les routes comme ici http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-url-params n'a pas aidé.

Mise à jour 4
Le problème est que form_for pointe vers /: id url, qui est écrasé par la route racine. changeant ainsi form_for à form_for(@news, url: news_path(@news)) et doivent mettre local ici ... chercher comment faire

+0

Que faire si vous supprimez "as: 'news'" de root root? –

+0

non, n'a pas aidé – Elmor

+0

J'ai posté la réponse ci-dessous – Elmor

Répondre

0

dans le fichier _form utiliser

form_for(@news, url: {action: 'show', id: @news, locale: params[:locale]}) 

pour votre formulaire. comme si elle ne soit pas écrasée par la racine

Questions connexes