Переменная пути не определена для ресурса - PullRequest
1 голос
/ 12 февраля 2012

Я пытаюсь изменить язык своего приложения из выпадающего меню, после чего следует кнопка отправки. Я ввел контроллер с именем language_change, определенный в route.rb как:

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

В представлении home.html.erb я сформулировал это так:

<%= 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 %>

Наконец-то в контроллере я поставил:

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

При загрузке домашней страницы я получаю следующее сообщение об ошибке:

undefined local variable or method `language_change_path'

Кто-нибудь может сказать мне, что не так? Что я не понимаю, так это когда в представлении я заменяю «language_change_path» на другой контроллер, определенный в другом месте приложения, например. 'password_reset_path' отображает страницу и даже обрабатывает отправку.

Спасибо за ваше лечение

1 Ответ

1 голос
/ 12 февраля 2012

Возможно, вам нужно изменить эту строку в routes.rb:

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

к этому:

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

В противном случае вспомогательный метод language_change_path ожидает, что конкретный экземпляр LanguageChange будет ссылаться на. Указав ресурс в единственном числе, вам не нужно передавать экземпляр помощнику, поскольку требуется, чтобы существовал только один такой экземпляр.

Полагаю, ваш password_reset ресурс тоже в единственном числе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...