Я пытаюсь сделать что-то похожее на Railscasts # 255 , но я получаю сообщение об отсутствии маршрута:
В файле routes.rb
Райана:
post "versions/:id/revert" => "versions#revert", :as => "revert_version"
В контроллере, где он использует маршрут, versions_controller.rb
link = view_context.link_to(link_name, revert_version_path(@version.next, :redo => !params[:redo]), :method => :post)
redirect_to :back, :notice => "Undid #{@version.event}. #{link}"
В моем routes.rb
post "/approve/:id" => "listings#approve", :as => "listing_approve"
и просмотр, где я использую свою ссылку:
<%= link_to 'Approve Content', listing_approve_path(@listing), :method => :post %>
Мои тесты возвращают мне ActionController::RoutingError: No route matches [GET] "/approve/1"
Если я оставляю метод как GET, все работает .. Использование rails 3.1.0rc5.Любые указания относительно того, что я делаю не так, были бы очень благодарны ..
РЕДАКТИРОВАТЬ: файл rout.rb (последняя строка установлена как match
прямо сейчас, чтобы работать)
RLR::Application.routes.draw do
root :to => "home#index"
devise_for :users, :controllers => { :registrations => "registrations" }
devise_for :users
match '/user' => "layouts#index", :as => :user_root
resources :users, :only => :show
resources :layouts, :only => [:index, :show]
resources :listings
resources :features
resources :orders
match "/preview/:id" => "listings#preview", :as => "listing_preview", :via => "get"
match "/approve/:id" => "listings#approve", :as => "listing_approve"
end