Rails Routes 네임 스페이스 및 form_for
내 route.rb에 네임 스페이스가 있습니다.
namespace :businesses do
resources :registration
end
내 컨트롤러는 business / registration_controller 하위 디렉토리에 있습니다.
def new
@business = Business.new
end
제 생각에는 이렇게하고 싶지만 form_for @business do |f| ...
다음과 같은 오류가 발생합니다.
No route matches {:controller=>"businesses", :action=>"create"}
서버를 다시 시작했는데 다음과 같은 결과도 나타납니다.
undefined method
# <# : 0x10339bb20>`에 대한 business_path '
내 레이크 루트는 다음과 같습니다.
home_index GET /home/index(.:format) {:action=>"index", :controller=>"home"}
new_user_session GET /users/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"}
user_session POST /users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session GET /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
user_password POST /users/password(.:format) {:action=>"create", :controller=>"devise/passwords"}
new_user_password GET /users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"}
edit_user_password GET /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
user_password PUT /users/password(.:format) {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET /users/cancel(.:format) {:action=>"cancel", :controller=>"devise/registrations"}
user_registration POST /users(.:format) {:action=>"create", :controller=>"devise/registrations"}
new_user_registration GET /users/sign_up(.:format) {:action=>"new", :controller=>"devise/registrations"}
edit_user_registration GET /users/edit(.:format) {:action=>"edit", :controller=>"devise/registrations"}
user_registration PUT /users(.:format) {:action=>"update", :controller=>"devise/registrations"}
user_registration DELETE /users(.:format) {:action=>"destroy", :controller=>"devise/registrations"}
users GET /users(.:format) {:action=>"index", :controller=>"users"}
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"}
user PUT /users/:id(.:format) {:action=>"update", :controller=>"users"}
user DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"}
full_tree_admin_categories GET /admin/categories/full_tree(.:format) {:action=>"full_tree", :controller=>"admin/categories"}
admin_categories GET /admin/categories(.:format) {:action=>"index", :controller=>"admin/categories"}
admin_categories POST /admin/categories(.:format) {:action=>"create", :controller=>"admin/categories"}
new_admin_category GET /admin/categories/new(.:format) {:action=>"new", :controller=>"admin/categories"}
edit_admin_category GET /admin/categories/:id/edit(.:format) {:action=>"edit", :controller=>"admin/categories"}
admin_category GET /admin/categories/:id(.:format) {:action=>"show", :controller=>"admin/categories"}
admin_category PUT /admin/categories/:id(.:format) {:action=>"update", :controller=>"admin/categories"}
admin_category DELETE /admin/categories/:id(.:format) {:action=>"destroy", :controller=>"admin/categories"}
businesses_registration_index GET /businesses/registration(.:format) {:action=>"index", :controller=>"businesses/registration"}
businesses_registration_index POST /businesses/registration(.:format) {:action=>"create", :controller=>"businesses/registration"}
new_businesses_registration GET /businesses/registration/new(.:format) {:action=>"new", :controller=>"businesses/registration"}
edit_businesses_registration GET /businesses/registration/:id/edit(.:format) {:action=>"edit", :controller=>"businesses/registration"}
businesses_registration GET /businesses/registration/:id(.:format) {:action=>"show", :controller=>"businesses/registration"}
businesses_registration PUT /businesses/registration/:id(.:format) {:action=>"update", :controller=>"businesses/registration"}
businesses_registration DELETE /businesses/registration/:id(.:format) {:action=>"destroy", :controller=>"businesses/registration"}
root /(.:format) {:action=>"index", :controller=>"home"}
네임 스페이스 경로가있는 경우 가장 좋은 방법은 다음과 같습니다.
class Admin::BusinessesController < ApplicationController
def new
@business = Business.new
end
end
route.rb에서 :
namespace :admin do
resources :businesses
end
보기 :
form_for [:admin, @business] do |f|...
문서 : http://guides.rubyonrails.org/form_helpers.html 섹션 2.3.1 네임 스페이스 다루기
귀하의 경우 :
route.rb에서는 모든 것이 정상입니다. 컨트롤러에 컨트롤러 이름이 아닌 변수가 있으므로 뷰에서 명시 적으로 URL을 작성해야합니다.
form_for @business, :url => business_registration_path do |f|...
business / registration_controller에 다음과 같은 것이 있다고 가정합니다.
class Businesses::RegistrationController < ApplicationController
def new
@business = Business.new
end
end
And one remark: I wouldn't create registration_controller for registering a new business. I think that keeping business related actions in business_controller is much clearer.
Actually, I think there is a better solution.
form_for [:admin, @business]
the issue with giving a url is that if you abstract the form out as a partial view, you'll need to deal with "create" and "update" situations. They points to different urls, and ends up with providing the @url
in controller.
참고URL : https://stackoverflow.com/questions/3853531/rails-routes-namespaces-and-form-for
'Nice programing' 카테고리의 다른 글
Symfony2-자체 공급 업체 번들 생성-프로젝트 및 Git 전략 (0) | 2020.10.13 |
---|---|
Rails에서 캐스케이드 삭제를 설정할 수 있습니까? (0) | 2020.10.13 |
모달 segue를 통해 표시된보기 닫기 (0) | 2020.10.13 |
내용에 관계없이 항상 테이블 열 너비를 고정하도록 강제 (0) | 2020.10.13 |
Createuser : 데이터베이스 postgres에 연결할 수 없음 : 치명적 : "tom"역할이 없습니다. (0) | 2020.10.13 |