сначала, чтобы проверить свои маршруты, перейдите в консоль и выполните
rake routes | grep session
, там вы получите список всех маршрутов вашего приложения rails (соответствует grep)
во вторую секунду.не получите ваши маршруты. rb
вы бы сделали
resources :session, :only => [update] do
match '/:controller(/:action(/:id))'
end
или
resources :session, :only => [update]
match '/:controller(/:action(/:id))'
end
это две разные вещи.Я думаю, что вы хотите последний.но здесь мы идем, есть другая проблема
resources :session, :only=>[update]
, которая выдает ошибку. (неопределенная локальная переменная или метод `update 'для #), если вы хотите указать действия, вам нужно сделать это как ключ
resources :session, :only=>[:update]
но вы также хотите отредактировать сообщение (изменить форму, обновить действие, чтобы сохранить изменения), поэтому вам нужно сделать
resources :users, :only=>[:edit, :update]
, теперь проверьте ваши рейк-маршрутыи посмотрите вуаля!
edit_session GET /session/:id/edit(.:format) {:action=>"edit", :controller=>"session"}
session PUT /session/:id(.:format) {:action=>"update", :controller=>"session"}
// edit
если вы хотите сделать это в вашем admin_controller, у вас должно быть пространство имен
#i take example for a user
namespace :admin do
resources :user :only => [:edit, :update]
end
если вы хотите сейчас связать его с представлением, маршрут называется edit_admin_user_path
, и в форме вам необходимо также ввести пространство имен в виде для:
=form_for [:admin, @user] do |f|