2016-03-21 4 views
0

Я просто добавил Devise для auth и хочу, чтобы у меня был выход из моего URL-адреса, поэтому я изменил конфигурацию Devise, чтобы использовать :get вместо :delete. Когда я смотрю на rake routes кажется правильным:Rails-маршруты, похоже, не синхронизированы

/sites/veggies/vegj $ rake routes 
        Prefix Verb URI Pattern      Controller#Action 
     new_user_session GET /users/sign_in(.:format)   devise/sessions#new 
      user_session POST /users/sign_in(.:format)   devise/sessions#create 
    destroy_user_session GET /users/sign_out(.:format)   devise/sessions#destroy 

Но когда я пытаюсь войти в моем приложении, я получаю ошибку маршрутизации, которая говорит /users/sign_out отображается DELETE.

enter image description here

Я просто начать работу с рельсов, так может быть, это очень простая задача. Мне кажется, что мне нужно что-то перезагрузить, но я думал, что рельсы/рейк-ручки обновляются так на лету, нет?

+1

обновления вещей в конфигурации/Инициализаторы не забирается без перезагрузки –

+0

@FrederickCheung маршруты расположены в ' config/routes.rb' .. не в инициализаторах! – siegy22

+0

, но параметр, указывающий, что нужно использовать: get for signouts находится в config/initializers/devise.rb –

ответ

2

После внесения изменений в initializers/devise.rb вам необходимо перезагрузить сервер. Они не будут автоматически подняты.

PS:

есть не так много вещей, не забирали автоматически, это большинство из них

  • Новых камней (после того, как вы расслоение установки)
  • генерируемых файлов после запуска сервер (например, установлен новый драгоценный камень, начал сервер, побежал гем генератор)
  • initializers/*.rb файлы
  • config/application.rb, config/environment.rb

Возможно, некоторые дополнительные файлы я забыл добавить, но в 95% случаях вы измените только файлы выше.

+0

Хорошо, мне кажется, мне нужно узнать, что (а что нет) подхвачено рельсами. Вы случайно не знаете хороших ссылок? – doub1ejack

+0

@ doub1ejack Обновлен мой ответ. – Avdept

+0

Спасибо @Avdept, это действительно полезно. – doub1ejack

1

Вы делаете запрос получения, как говорит ошибка. Вы должны указать в своей ссылке, что вы хотите использовать метод удаления.

<%= link_to "Log Out", destroy_user_session_path, method: :delete %>

Убедитесь, что вы JQuery-ujs в вашем Gemfile.

+0

В соответствии с выходом для 'rake routes' мне не нужно использовать метод DELETE, хотя, должен ли я? "' destroy_user_session GET/users/sign_out (.: format) '" – doub1ejack

+0

Это не то, что показывает ваш скриншот. Я предполагаю, что это значение по умолчанию для разработки, и вы его отредактировали, но не перезапустили свой сайт? –

+0

Да, мой вопрос в том, почему я получал два разных маршрута («рейк-маршруты» и скриншот). Видимо, это потому, что я не очень хорошо понимаю, что (а не требуется) требует перезапуска. Если вы знаете о хорошей разбивке того, что рельсы делают и не обнаруживают автоматически, я все уши:) – doub1ejack

0

destroy_user_session_path или «/ пользователи/sign_out» это следует удалить не запрос получит при определении связи необходимо отметить его как по умолчанию он будет принимать get request с помощью method: :delete вы указывая, что это delete request.

будет принимать запрос удаления

<%= link_to "Sign Out", destroy_user_session_path, method: :delete %> 

Он будет принимать GET просьбой об

<%= link_to "Sign Out", destroy_user_session_path %>