Hej mam taki o to problem. Zdefiniowałem namepsace :admin do niego przypisałem jeden kontroler :articles. Requesty typu GET są normalnie odczytywane, niestety problem pojawia się przy requestach typu POST.
Prefix Verb URI Pattern Controller#Action
admin_articles GET /admin/articles(.:format) admin/articles#index
POST /admin/articles(.:format) admin/articles#create
new_admin_article GET /admin/articles/new(.:format) admin/articles#new
edit_admin_article GET /admin/articles/:id/edit(.:format) admin/articles#edit
admin_article GET /admin/articles/:id(.:format) admin/articles#show
PATCH /admin/articles/:id(.:format) admin/articles#update
PUT /admin/articles/:id(.:format) admin/articles#update
DELETE /admin/articles/:id(.:format) admin/articles#destroy
tak kontroler znajduje się w: app/controllers/admin/article_controller.rb:
class Admin::ArticlesController < Core::AdminController
def new
@article = Article.new
end
def create
@article = Article.new
end
end
tak jak napisałem, podczas wejścia na url: http://localhost:3000/admin/articles/new, formularz się wyświetla, jednakże podczas wysyłania POST-a dostaję wyjątek:
Routing Error
No route matches [POST] "/admin/articles/new"
def new
@article = Article.new
end
def create
@article = Article.new(article_params)
@article.save
redirect_to admin_articles_path
end
NoMethodError in Admin::Articles#new
undefined method `articles_path' for #<#<Class:0x8eddf20>:0x8eb1efc>
Did you mean? asset_path
edit:
Dokonałem zmiany w routes.rb:
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
namespace :core do
end
namespace :admin do
resources :articles
end
scope :admin do
resources :articles
end
end
dzięki czemu wywołanie = form_for @article do |f| zaczęło ładnie działać.