У меня есть связь has_one между пользователем и моделью настройки.У меня также есть SettingsController с действиями редактирования и обновления.На первой странице у меня есть ссылка для редактирования настроек:
<%= link_to (settings_path(current_user.setting)), do %>
..
<% end %>
Это вызывает ActionController :: RoutingError Нет совпадений с маршрутом {: controller => "settings",: action => "edit"} ... при попытке отобразить первую страницу.
Я застрял, стуча головой, почему это происходит.Используя Devise для аутентификации пользователя, этот current_user должен быть глобальной переменной.
Вот как определяются маршруты в маршрутах. Rb:
resources :setting, :only => [:edit, :update]
match '/settings/:id' => "settings#edit", :controller => :setting, :as => :settings
Вот что возвращает рейк-маршруты:
edit_setting GET /setting/:id/edit(.:format) {:action=>"edit", :controller=>"setting"}
setting PUT /setting/:id(.:format) {:action=>"update", :controller=>"setting"}
settings /settings/:id(.:format) {:controller=>"settings", :action=>"edit"}
Другое предположение состоит в том, что имя контроллера (SettingsController) должно быть единственным, а не множественным при использовании ассоциации has_one.По какой-то странной причине Rails не замечает мой контроллер, хотя он и присутствует.
Помощь приветствуется.