Как написать матч в route.rb - PullRequest
0 голосов
/ 24 ноября 2011

В моем AdminController у меня есть методы, названные как edit, update и update_admin.И в route.rb

  resources :session, :only => [update]
    match '/:controller(/:action(/:id))'
  end

Когда я перехожу по URL-адресу '/ users / edit / 1'.На этой странице я хочу вызвать метод действия в update_admin в AdminController.Как это сделать?

Мой edit.erb имеет

    <%= render :partial => '/submit', :locals =
> {:button_html => f.submit('Update'), :validate_present => true}
 %>

1 Ответ

0 голосов
/ 24 ноября 2011

сначала, чтобы проверить свои маршруты, перейдите в консоль и выполните

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|
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...