После перехода на rails 3 неопределенный метод reverse_merge для nil: NilClass - PullRequest
2 голосов
/ 27 июля 2011

После перехода на Rails 3 у меня возникает эта проблема

undefined method `reverse_merge' for nil:NilClass

activesupport (3.0.7) lib/active_support/whiny_nil.rb:48:in `method_missing'
actionpack (3.0.7) lib/action_controller/metal/url_for.rb:8:in `url_options'
actionpack (3.0.7) lib/action_dispatch/routing/url_for.rb:131:in `url_for'
actionpack (3.0.7) lib/action_dispatch/routing/route_set.rb:195:in `frontend_path'
lib/my_own_login.rb:97:in `login_required'
activesupport (3.0.7) lib/active_support/callbacks.rb:457:in `_run__1711026059__process_action__199225275__callbacks'
activesupport (3.0.7) lib/active_support/callbacks.rb:410:in `send'
activesupport (3.0.7) lib/active_support/callbacks.rb:410:in `_run_process_action_callbacks'
activesupport (3.0.7) lib/active_support/callbacks.rb:94:in `send'
activesupport (3.0.7) lib/active_support/callbacks.rb:94:in `run_callbacks'
actionpack (3.0.7) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.0.7) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
activesupport (3.0.7) lib/active_support/notifications.rb:52:in `instrument'

Кто-нибудь еще сталкивался с этой ошибкой?

В lib / my_own_login.rb: 97

if params[:mode].to_i == 1
  redirect_to root_path
else params[:mode].to_i == 2
  redirect_to frontend_path #Line 97
end

В моих маршрутах.рб

match "/account" => "account#index", :via => :get, :as => :frontend

rake routes | grep frontend

frontend GET    /account(.:format)                                                                    {:action=>"index", :controller=>"account"}

1 Ответ

3 голосов
/ 28 июля 2011

Я исправил ошибку.Проблема была в следующем коде:

def default_url_options(options={})
  { :org_code => current_organisation.custom_url } if !current_organisation.blank? && !current_organisation.custom_url.blank?
end

Я изменил на:

def default_url_options(options={})
  if !current_organisation.blank? && !current_organisation.custom_url.blank?
    { :org_code => current_organisation.custom_url }
  else
    {}
  end
end

Сейчас default_url_options Возвращаемый результат всегда должен хешироваться.

...