2013-12-03 3 views
0

У меня есть NodeJs: 0.10.22 и compoundJs: 1.1.7-11CompoundJs, ExpressJs маршруты

Я следующий код контроллера:

module.exports = Rose; 

function Rose(init){ 

} 

Rose.prototype.index = function(c){ 
    c.send('Controller ROSE, Function Index'); 
}; 

Rose.prototype.thorne = function thorne(c){ 
    c.send('Controller ROSE, Function Thorne'); 
}; 

я определила следующий маршрут в routes.js файла:

exports.routes = function (map) { 

    map.resources('rose', function(flower){ 
     //flower.get('thorne', '#thorne'); 
     flower.get('thorne'); 
    }); 
}; 

Я попробовал обе линии в map.resources (один в настоящее время заметил, но раньше он использовался) в routes.js.

После URL работы:

http://localhost:3000/rose 

Но после URL не работает:

http://localhost:3000/rose/thorne 

И это показывает следующее сообщение об ошибке:

Express 
500 Error: Undefined action rose#show(/rose/thorne) 

Может кто-то один наставит меня, что я я делаю неправильно и как его можно исправить.

ответ

1

CompoundJS CRUD позволяет просматривать список модели и методы управления отдельными данными. При использовании .resources генерируется несколько маршрутов. Вы можете просмотреть их, запустив compound routes (или compound r). Некоторые примеры ниже с помощью розы (множественного числа):

roses GET  /roses.:format?   roses#index - Should return a list of roses 
rose GET   /roses/:id.:format?  roses#show - Displays a single rose 
edit_rose GET /roses/:id/edit.:format? roses#edit - Brings up an edit form for a single rose 

При отображении маршрута для цветка, compoundjs ожидает Вас на карту цветка к одной розе. Маршрут определяется как:

thorne_rose GET /roses/:rose_id/thorne roses#thorne 

Для доступа к этому розовому тону необходимо пройти идентификатор розы. Тем не менее, если вы собираетесь только одну розы (нет списка из роз или что-нибудь), то вы можете добавить одноплодную опцию к ресурсу:

map.resources('rose', { singleton: true }, function(flower) { 
    flower.get('thorne'); 
}); 

Это также устранит маршрут индекса, вместо этого использовать Rose.prototype.show. В типичном CRUD индекс перечисляет все значения для модели. Поскольку существует только одно значение, страница списка не нужна.

Смежные вопросы