#ruby-on-rails #ruby-on-rails-3 #routing
#ruby-on-rails #ruby-on-rails-3 #маршруты
Вопрос:
Я пытаюсь показать ресурс после того, как он был создан.
routes.rb
resources :eco_systems do
member do
get 'new'
post 'create'
get 'show'
end
end
eco_systems_controller.rb
class EcoSystemsController < ApplicationController
def new
@eco_system = EcoSystem.new
end
def create
@eco_system = current_user.eco_systems.create(params[:eco_system])
redirect_to eco_system_path(@eco_system.id)
end
def show
end
end
При redirect_to eco_system_path(@eco_system.id)
запуске результирующий URL является
http://localhost:3000/eco_systems/5
Вывод на консоль:
Started GET "/eco_systems/5" for 127.0.0.1 at 2011-06-14 16:04:22 1000
Processing by EcoSystemsController#new as HTML
Parameters: {"id"=>"5"}
Но загруженная страница — это новая страница. Почему не загружено действие / представление show?
Комментарии:
1. Почему у вас есть
member
раздел в вашемroutes.rb
файле?resources :eco_systems
Недостаточно для вашего использования?
Ответ №1:
Это происходит потому, что show
действие определено после, new
если вы запустите rake routes
, вы увидите
eco_system GET /eco_systems/:id(.:format) {:action=>"new", :controller=>"eco_systems"}
POST /eco_systems/:id(.:format) {:action=>"create", :controller=>"eco_systems"}
GET /eco_systems/:id(.:format) {:action=>"show", :controller=>"eco_systems"}
когда маршруты проверяются сверху, вызывается первое действие