2012-02-11 5 views
1

내 애플리케이션의 언어를 드롭 다운 메뉴에서 제출 단추로 변경하려고합니다. 컨트롤러에 마지막으로리소스에 대해 경로 변수가 정의되지 않았습니다.

<%= form_tag language_change_path, :method=>:post do %> 
<div class="field"> 
    <%= select_tag(params[:l], 
     options_for_select(
     [[t('language.english'),'en'], 
     [t('language.french'), 'fr'], 
     [t('language.dutch'), 'nl']], params[:l]), 
     ) 
    %> 
</div> 
<div class="actions"> <%= submit_tag "Change language!" %> 
<% end %> 

:보기 home.html.erb에서

resources :language_change, :only => [:create, :new] 

, 나는 이런 식으로 넣어 : 나는대로 route.rb에 정의 된 'language_change'라는 이름의 컨트롤러를 도입 내가 넣어 :

:

class LanguageChangeController < ApplicationController 
    def create 
    I18n.locale=params[:l] 
    end 
end 

나는 다음과 같은 오류 메시지가 얻을 홈 페이지를로드 할 때

아무도 저에게 무엇이 잘못되었는지 말할 수 있습니까? 내가 이해하지 못하는 것은 내가보기에 'language_change_path'를 앱의 다른 곳에서 정의 된 다른 컨트롤러로 대체 할 때입니다. 'password_reset_path'는 페이지를 표시하고 제출을 처리합니다. 당신의 helage

답변

1

에 대한

덕분에 당신은 아마 routes.rb이 줄을 변경해야합니다

resources :language_change, :only => [:create, :new] 

이에 :

resource :language_change, :only => [:create, :new] 

그렇지 않으면, 도우미 메서드 language_change_path 특정 인스턴스를 기대하고있다 link to LanguageChange. 리소스를 단수로 지정하면 하나의 인스턴스 만 존재해야하므로 인스턴스를 도우미에 전달할 필요가 없습니다.

귀하의 password_reset 리소스가 단수인지 짐작할 수 있습니다.

+0

감사합니다. Brandan! 이제는 작동하지만 컨트롤러 등의 이름을 복수화해야했습니다. 알아두면 좋습니다. 이제 루비에서의 다중화의 신비에 대해 조금 더 파헤쳐 야합니다 .-) – microcosme

+0

도움이 되니 기쁩니다. 정확한 답을 수락했는지 확인하십시오. – Brandan

관련 문제