首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Railway.js中的嵌套资源:表示无法发布

Railway.js中的嵌套资源:表示无法发布
EN

Stack Overflow用户
提问于 2011-08-17 15:23:16
回答 2查看 996关注 0票数 1

我正在尝试一个名为railway.js的MVC框架(它位于Node、Express、Mongoose和Mongo之上)。

我正在尝试让嵌套的资源正常工作。我执行了以下脚手架命令:

代码语言:javascript
复制
railway g scaffold user name email description 
railway g scaffold setup title description

然后,我将routes.js文件更改为:

代码语言:javascript
复制
exports.routes = function (map) {
  map.resources('users',function(user) {
    user.resources('setups');
  });
});

railway r给了我所希望的:

代码语言:javascript
复制
     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]。(我们不应该这样做吗?)

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-08-18 03:39:40

在您的setup_controller中:

代码语言:javascript
复制
before(loaduser);

..。

代码语言:javascript
复制
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中:

代码语言:javascript
复制
- form_for( setup, { method: 'POST', action: path_to.user_setups(user) }, function(form){
    //layout your form
- });
票数 3
EN

Stack Overflow用户

发布于 2011-08-17 16:20:13

查看文件app/views/setups/new.ejs

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<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帮助器的第一个参数,以便铁路会为您建立正确的路线。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7089194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档