Node.js railway.js中的嵌套资源:表示无法发布

Node.js railway.js中的嵌套资源:表示无法发布,node.js,express,railway.js,Node.js,Express,Railway.js,我正在尝试一个名为(位于Node、Express、Mongoose和Mongo之上)的MVC框架 我正在尝试让嵌套资源工作。我执行了以下命令: railway g scaffold user name email description railway g scaffold setup title description 然后我将routes.js文件更改为: exports.routes = function (map) { map.resources('users',function

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

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

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');
  });
});
railwayr
可以实现我的期望:

     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),然后转到,它说我“无法发布”

我错过了什么?什么是好的调试方法

我还尝试将一个元素添加到UserSchema对象中:
setups:[SetupSchema]
。(难道我们不应该这样做吗?)


提前感谢。

查看文件
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) %>
<% });%>
新设置
或
它指的是不存在的路由路径\u to.setups,您必须将其更改为正确的路由路径\u to.user\u设置:

<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) %>
<% });%>
新设置
或
因此,您将发布到/users/../setups,而不是发布到/users/../setups/new


请注意,您需要将user作为path_的第一个参数传递给helper,以便railway为您构建正确的路线。

查看文件
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) %>
<% });%>
新设置
或
它指的是不存在的路由路径\u to.setups,您必须将其更改为正确的路由路径\u to.user\u设置:

<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) %>
<% });%>
新设置
或
因此,您将发布到/users/../setups,而不是发布到/users/../setups/new


请注意,您需要将user作为path\u to helper的第一个参数,以便railway为您创建正确的路由。

在您的设置\u控制器中:

before(loaduser);

在您的设置/form.jade中:

- form_for( setup, { method: 'POST', action: path_to.user_setups(user) }, function(form){
    //layout your form
- });

在您的设置\u控制器中:

before(loaduser);

在您的设置/form.jade中:

- form_for( setup, { method: 'POST', action: path_to.user_setups(user) }, function(form){
    //layout your form
- });

这是有道理的。关于你最后的说明,你能说明我需要在哪里进行必要的更改吗?我做了第一次更改,得到了相同的错误。在设置控制器中,
new
action(或在
new
action之前创建过滤器)类似这样的内容:this.user=getUser(req.params['user\u id']),或者,siply,您可以将user\u id作为参数传递给user\u setups helper:path\u to.users\u setups(request.params['user\u id']);您是否可以在回答后附上在安装程序控制器中进行这些更改的示例?(你是说loadUser而不是getUser?)谢谢!例如,如何更改index.ejs?现在,尝试后操作URL为空:。我也试过了。我对如何将用户和设置对象传递给视图以及函数的路径(以及它们采用的参数)有点困惑。这些在哪里?(很抱歉问新手问题!)这是有道理的。关于你最后的说明,你能说明我需要在哪里进行必要的更改吗?我做了第一次更改,得到了相同的错误。在设置控制器中,
new
action(或在
new
action之前创建过滤器)类似这样的内容:this.user=getUser(req.params['user\u id']),或者,siply,您可以将user\u id作为参数传递给user\u setups helper:path\u to.users\u setups(request.params['user\u id']);您是否可以在回答后附上在安装程序控制器中进行这些更改的示例?(你是说loadUser而不是getUser?)谢谢!例如,如何更改index.ejs?现在,尝试后操作URL为空:。我也试过了。我对如何将用户和设置对象传递给视图以及函数的路径(以及它们采用的参数)有点困惑。这些在哪里?(对于新手提出的问题,很抱歉!)您是否仍需要在安装程序的控制器和所有视图中将path_to.setups更改为path_to.user_设置?有关用户对象的信息如何发送到new.ejs之类的视图并由其使用?谢谢如果安装资源嵌套在用户下,如您的示例中所示,那么是的,您仍然需要指定指向.user\u setups(user)的路径。过滤器之前的loadUser()将获取用户并将其分配给此。用户,一旦在视图模板中发生这种情况,您就可以访问“用户”,您是否仍需要将安装程序控制器和所有视图中的path_to.setups更改为path_to.user_设置?有关用户对象的信息如何发送到new.ejs之类的视图并由其使用?谢谢如果安装资源嵌套在用户下,如您的示例中所示,那么是的,您仍然需要指定指向.user\u setups(user)的路径。筛选器之前的loadUser()获取用户并将其分配给this.user,一旦在视图模板中发生这种情况,您就可以访问“user”rails.js:(是否尝试在节点上不模拟rails?(使用express)rails.js:(是否尝试在节点上不模拟rails?(使用express)