Я пытаюсь «управлять» пользователями вместо «новых» и «показывать» пользователей с помощью действий. Я подозреваю, что проблема где-то в маршрутах, так как моя ссылка '/ users / manage' принимается в качестве параметра id для действия 'show':
Терминальный журнал процесса:
Processing UsersController#show (for 127.0.0.1 at 2010-06-28 00:31:45) [GET]
Parameters: {"id"=>"manage"}
ActionController::UnknownAction (No action responded to show. Actions: create, destroy, index, manage, and update):
Вот некоторые фрагменты кода соответствующих частей:
users / index.html.erb (ссылка, созданная для перехода в раздел управления, т. Е. '/ Users / manage'):
<%= link_to('New User', :action => 'manage') %>
users_controller.rb (предполагается, что получает действие «управление», но получает «show» от вызова выше:
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @users }
end
end
def manage
@users = User.all
@user = User.find(params[:id]) if params[:id]
@user = User.new if @user.nil?
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @user }
end
end
Ruby / rails видит '/ users / manage' как ': controller /: action /: id' т.е. 'users / show / 1' .
При использовании '/ users / manage / 1' для редактирования одного пользователя, правильное: действие (как «manage») загружается через функцию «manage» UsersController, и все отображается редактировать из файла manage.html.erb. UsersController видит «управлять», а не «показывать», правильно, в его случае, но только из-за того, что: id передается, заставляя и работает маршрут:: controller /: action /: id.
'users / manage',: controller /: action , похоже, является проблемой , , не признающей 'manage' как действительное: только действие: вместо отправки как: id в 'show' ...
routes.rb
ActionController::Routing::Routes.draw do |map|
map.resources :users
map.resources :categories
map.resources :posts
map.connect ':controller/:action'
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
Может кто-нибудь помочь мне решить эту проблему?
Почему действие 'show' выполняется автоматически? Можно ли заставить «пользователей» и «управлять» на маршрутах распознавать в контроллере как «управлять», а не как «показывать»?
Спасибо за помощь людям:)
Мир.
EDIT
рейковые маршруты
$ rake routes
(in /home/krnel/sites/rails_projects/simple_blog)
users GET /users(.:format) {:action=>"index", :controller=>"users"}
POST /users(.:format) {:action=>"create", :controller=>"users"}
new_user GET /users/new(.:format) {:action=>"new", :controller=>"users"}
edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
user GET /users/:id(.:format) {:action=>"show", :controller=>"users"}
PUT /users/:id(.:format) {:action=>"update", :controller=>"users"}
DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"}
categories GET /categories(.:format) {:action=>"index", :controller=>"categories"}
POST /categories(.:format) {:action=>"create", :controller=>"categories"}
new_category GET /categories/new(.:format) {:action=>"new", :controller=>"categories"}
edit_category GET /categories/:id/edit(.:format) {:action=>"edit", :controller=>"categories"}
category GET /categories/:id(.:format) {:action=>"show", :controller=>"categories"}
PUT /categories/:id(.:format) {:action=>"update", :controller=>"categories"}
DELETE /categories/:id(.:format) {:action=>"destroy", :controller=>"categories"}
posts GET /posts(.:format) {:action=>"index", :controller=>"posts"}
POST /posts(.:format) {:action=>"create", :controller=>"posts"}
new_post GET /posts/new(.:format) {:action=>"new", :controller=>"posts"}
edit_post GET /posts/:id/edit(.:format) {:action=>"edit", :controller=>"posts"}
post GET /posts/:id(.:format) {:action=>"show", :controller=>"posts"}
PUT /posts/:id(.:format) {:action=>"update", :controller=>"posts"}
DELETE /posts/:id(.:format) {:action=>"destroy", :controller=>"posts"}
manage_users GET /users/manage(.:format) {:action=>"manage", :controller=>"users"}
GET /users(.:format) {:action=>"index", :controller=>"users"}
POST /users(.:format) {:action=>"create", :controller=>"users"}
GET /users/new(.:format) {:action=>"new", :controller=>"users"}
GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
GET /users/:id(.:format) {:action=>"show", :controller=>"users"}
PUT /users/:id(.:format) {:action=>"update", :controller=>"users"}
DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"}
/:controller/:action/:id
/:controller/:action/:id(.:format)