我正在尝试一个名为railway.js的MVC框架(它位于Node、Express、Mongoose和Mongo之上)。
我正在尝试让嵌套的资源正常工作。我执行了以下脚手架命令:
railway g scaffold user name email description
railway g scaffold setup title description然后,我将routes.js文件更改为:
exports.routes = function (map) {
map.resources('users',function(user) {
user.resources('setups');
});
});做railway r给了我所希望的:
user_setups GET /users/:user_id/setups.:format? setups#index
user_setups POST /users/:user_id/setups.:format? setups#create
new_user_setup GET /users/:user_id/setups/new.:format? setups#new
edit_user_setup GET /users/:user_id/setups/:id/edit.:format? setups#edit
user_setup DELETE /users/:user_id/setups/:id.:format? setups#destroy
user_setup PUT /users/:user_id/setups/:id.:format? setups#update
user_setup GET /users/:user_id/setups/:id.:format? setups#show
users GET /users.:format? users#index
users POST /users.:format? users#create
new_user GET /users/new.:format? users#new
edit_user GET /users/:id/edit.:format? users#edit
user DELETE /users/:id.:format? users#destroy
user PUT /users/:id.:format? users#update
user GET /users/:id.:format? users#show当我启动服务器时,添加一个用户(碰巧是4e4b61e39f0d60d834000002),然后转到http://localhost:3000/users/4e4b61e39f0d60d834000002/setups/new,它显示我“无法发布”。
我遗漏了什么?什么是好的调试方法?
我还尝试向UserSchema对象添加一个元素:setups: [SetupSchema]。(我们不应该这样做吗?)
提前谢谢。
发布于 2011-08-18 03:39:40
在您的setup_controller中:
before(loaduser);..。
function loadUser () {
User.findById(req.params.user_id, function (err, user) {
if (err || !user) {
redirect(path_to.users);
} else {
// this is where we make the actual user object accessible inside the view templating
this.user = user;
next();
}
}.bind(this));
}在您的setup/form.jade中:
- form_for( setup, { method: 'POST', action: path_to.user_setups(user) }, function(form){
//layout your form
- });发布于 2011-08-17 16:20:13
查看文件app/views/setups/new.ejs
<h1>New setup</h1>
<% form_for(setup, {action: path_to.setups, method: 'POST', id: "setup_form"}, function (form) { %>
<%- partial('setups/form.ejs', {locals: {form: form, setup: setup}}) %>
<%- form.submit('Create setup') %> or
<%- link_to('Cancel', path_to.setups) %>
<% });%>表示不存在路由path_to.setups,需要修改为正确的路由path_to.user_setups:
<h1>New setup</h1>
<% form_for(setup, {action: path_to.user_setups(user), method: 'POST', id: "setup_form"}, function (form) { %>
<%- partial('setups/form.ejs', {locals: {form: form, setup: setup}}) %>
<%- form.submit('Create setup') %> or
<%- link_to('Cancel', path_to.setups) %>
<% });%>因此,您将POST到/users/.../setups,而不是POST到/users/.../setups/new。
请注意,您需要传递用户作为path_to帮助器的第一个参数,以便铁路会为您建立正确的路线。
https://stackoverflow.com/questions/7089194
复制相似问题