2013-09-22 1 views
0

У меня есть таблица базы данных storeрельсы собственный контроллер ресурсов и форма ошибки

название модели модели/магазин/store.rb

class Store::Store < ActiveRecord::Base 
... 
end 

контроллер контроллеры/магазин/maintenance_controller.rb

class Store::MaintenanceController < ApplicationController 

    def index 
    @stores = Store.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @stores } 
    end 
    end 

    def new 
    @store = Store.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @store } 
    end 
    end 

routes.r б

namespace :store do 
    root :to => "store#index" 
    resources :store, :path => 'maintenance', controller: 'maintenance', :as => 'maintenance' 
    end 

реки маршруты | Grep магазин

 store_root  /store(.:format)           store/store#index 
    store_maintenance_index GET /store/maintenance(.:format)        store/maintenance#index 
         POST /store/maintenance(.:format)        store/maintenance#create 
    new_store_maintenance GET /store/maintenance/new(.:format)       store/maintenance#new 
    edit_store_maintenance GET /store/maintenance/:id/edit(.:format)      store/maintenance#edit 
     store_maintenance GET /store/maintenance/:id(.:format)       store/maintenance#show 
         PUT /store/maintenance/:id(.:format)       store/maintenance#update 
         DELETE /store/maintenance/:id(.:format)       store/maintenance#destroy 

если я ввести локальный: 3000/магазин своей работы, но если я ввести локальный: 3000/магазина/новые им получить ошибку undefined method 'stores_path' for on line <%= form_for(@store) do |f| %>

что здесь не так? Спасибо (я уже есть магазин контроллера Вот почему я должен переименовать контроллер для хранения таблицы, если я хочу использовать подмостки)

+0

Какова ваша версия Rails? – Victor

+0

rails -v возвращает 3.2.13 – Muflix

ответ

0

Ваша форма ищет POST по stores_path, но это store_maintenance_index_path, где ваш маршрут идет для создания действия. Таким образом, нет stores_path.

Ваша установка не прав ..

У вас нет каких-либо перенаправляет ресурсы для stores только для maintenances ..

Таким образом, реальный вопрос, что вы пытаетесь Crud? Это maintenances или stores?

Если вы хотите Crud stores, редактировать свои маршруты в:

namespace :store do 
    resources :stores 
end 

Если вы действительно хотите изменить путь к обслуживанию, что-то вроде этого:

namespace :store do 
    resources :stores, path: 'maintenances', controller: 'stores', as: 'stores' 
end 

Вы не хотите к CRUD stores в контроллере maintenances, это просто не так ...

+0

Я хочу таблицу хранения CRUD, но crud действия имеют в контроллере maintance, потому что им можно использовать контроллер хранилища для чего-нибудь еще? – Muflix

+0

ОК, я подумаю об этом, возможно, я переименую контроллер хранилища – Muflix

+1

Если вы действительно этого хотите, у вас может быть «StoreController» и «StoresController», одно и несколько. Но мой совет будет одним контроллером на модель.Также, если это только те пути, о которых вы беспокоитесь, а просто используйте 'scope' для'/store'. И узнайте больше информации о маршрутизации вообще .. –

0

Вы можете попытаться переместить ваш models/store/store.rb в models/store.rb, а затем изменить линию:

class Store < ActiveRecord::Base 
... 
end 
+0

URL-адрес работает, поэтому зачем его менять? – Muflix