빠른 개요:
네임 스페이스로 인해 혼란스러워지는 것 같아요 ...
저는 거의 엔진을 생성하는 발전기를 만들었습니다.
내가 생성 한 경로에 대해 정의되지 않은 메서드를 얻고 있지만 레이크 경로에 표시됩니다.
좀 더:
내 생성기는 다음 경로를 생성합니다.
namespace :shifted_commerce do
resources :items
resources :base_items
resource :cart, only: [:show, :update, :destroy] do
resource :order, only: [:show, :create, :update, :edit, :new
end
end
이제 컨트롤러가 app/controllers/shifted_commerce/(controller_name)
다음은 base_item 컨트롤러에 대한 색인 작업입니다.
def index
@base_items = ShiftedCommerce::BaseItem.all
@line_item = ShiftedCommerce::LineItem.new
@cart = current_cart
@title = "Store"
end
보시다시피, 모델 이름도 지정했습니다.
class ShiftedCommerce::BaseItem < ActiveRecord::Base
{...}
end
위의 작업을 통해 내 앱이 라우팅됩니다.
root 'shifted_commerce/base_items#index'
페이지로드시 오류가 발생합니다.
undefined local variable or method `new_base_item_path' for #<#<Class:0x007fe26ea77940>:0x007fe26c580a10>
수업이 될 수 있습니까 #<#<Class:0x007fe26ea77940>:0x007fe26c580a10>
? 이 문제를 디버깅하는 방법을 잘 모르겠습니다.
내가 경로를 호출하는 코드 :
{...}
<%= link_to "New Item", new_shifted_commerce_base_item_path %>
내 경로는 다음과 같습니다.
Prefix Verb URI Pattern Controller#Action
shifted_commerce_items GET /shifted_commerce/items(.:format) shifted_commerce/items#index
POST /shifted_commerce/items(.:format) shifted_commerce/items#create
new_shifted_commerce_item GET /shifted_commerce/items/new(.:format) shifted_commerce/items#new
edit_shifted_commerce_item GET /shifted_commerce/items/:id/edit(.:format) shifted_commerce/items#edit
shifted_commerce_item GET /shifted_commerce/items/:id(.:format) shifted_commerce/items#show
PATCH /shifted_commerce/items/:id(.:format) shifted_commerce/items#update
PUT /shifted_commerce/items/:id(.:format) shifted_commerce/items#update
DELETE /shifted_commerce/items/:id(.:format) shifted_commerce/items#destroy
shifted_commerce_base_items GET /shifted_commerce/base_items(.:format) shifted_commerce/base_items#index
POST /shifted_commerce/base_items(.:format) shifted_commerce/base_items#create
new_shifted_commerce_base_item GET /shifted_commerce/base_items/new(.:format) shifted_commerce/base_items#new
edit_shifted_commerce_base_item GET /shifted_commerce/base_items/:id/edit(.:format) shifted_commerce/base_items#edit
shifted_commerce_base_item GET /shifted_commerce/base_items/:id(.:format) shifted_commerce/base_items#show
PATCH /shifted_commerce/base_items/:id(.:format) shifted_commerce/base_items#update
PUT /shifted_commerce/base_items/:id(.:format) shifted_commerce/base_items#update
DELETE /shifted_commerce/base_items/:id(.:format) shifted_commerce/base_items#destroy
shifted_commerce_cart_order POST /shifted_commerce/cart/order(.:format) shifted_commerce/orders#create
new_shifted_commerce_cart_order GET /shifted_commerce/cart/order/new(.:format) shifted_commerce/orders#new
edit_shifted_commerce_cart_order GET /shifted_commerce/cart/order/edit(.:format) shifted_commerce/orders#edit
GET /shifted_commerce/cart/order(.:format) shifted_commerce/orders#show
PATCH /shifted_commerce/cart/order(.:format) shifted_commerce/orders#update
PUT /shifted_commerce/cart/order(.:format) shifted_commerce/orders#update
shifted_commerce_cart GET /shifted_commerce/cart(.:format) shifted_commerce/carts#show
PATCH /shifted_commerce/cart(.:format) shifted_commerce/carts#update
PUT /shifted_commerce/cart(.:format) shifted_commerce/carts#update
DELETE /shifted_commerce/cart(.:format) shifted_commerce/carts#destroy
root GET /
무엇보다 먼저 네임 스페이스 컨트롤러 및 작업에 대한 적절한 규칙을 따르고 있다고 생각하지 않습니다 . 레일 문서에 따르면 다음과 같이 경로를 정의해야합니다.
namespace :shifted_commerce do
resources :items
resources :base_items
resource :cart, only: [:show, :update, :destroy] do
resource :order, only: [:show, :create, :update, :edit, :new]
end
end
그렇다면 귀하의 행동에 접근하는 방법은 다음과 같습니다.
new_shifted_commerce_base_item_path
레일 라우팅 문서를 실제로 살펴 봐야 합니다 . 매우 유용하고 간단합니다. 또한 여기 에 네임 스페이스와 레일 의 범위 의 차이점 에 대한 좋은 스택 오버플로 게시물이 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다