2013-03-05 3 views
1

Я - абсолютный новичок в node.js и geddy. Я следил за несколькими учебниками, и теперь я пытаюсь написать что-то подобное для моих целей.Geddy - создать новый товар

Когда я пытаюсь создать новый элемент, хотя, я получаю следующее сообщение:

/arithmetic_problem_types/function%20(id)%20%7B%20%20%20%20%20%20options.id%20=%20id;%20%20%20%20%20%20return%20helpersBase.urlFor.action(options);%20%20%20%20%7D not found. 

Я понятия не имею, где это может исходить от. Я просмотрел код и ничего не нашел.

Контроллер:

var ArithmeticProblemTypes = function() { 
    this.respondsWith =[ 'html', 'json', 'xml', 'js', 'txt']; 

    this.index = function (req, resp, params) { 
    var self = this; 

    geddy.model.ArithmeticProblemType.all(function (err, arithmetic_problem_types) { 
     self.respond({ 
      params: params, arithmetic_problem_types: arithmetic_problem_types 
     }); 
    }); 
    }; 

    this.add = function (req, resp, params) { 
    this.respond({ 
     params: params 
    }); 
    }; 

    this.create = function (req, resp, params) { 
    var self = this, arithmetic_problem_type = geddy.model.ArithmeticProblemType.create({ 
     name: '1', title: 'open', numberType: '1', numberRanges: '1', operators: '1', askedFor: '1', specialProblemCategory: '1', askedForNumDenomOrBoth: '1', 
      reducedFractions:'1', mixedFractions: '1' 
    }); 

    arithmetic_problem_type.save(function (err, data) { 
     if (err) { 
      params.errors = err; 
      self.transfer('add'); 
     } else { 
      self.redirect({ 
       controller: self.name 
      }); 
     } 
    }); 
    }; 
.................................................................... 
}; 

exports.ArithmeticProblemTypes = ArithmeticProblemTypes; 

add.html.ejs

<div class="hero-unit"> 
    <%= partial('_form', {params: params}); %> 
</div> 

index.html.ejs

<div class="hero-unit"> 
    <h2>Arithmetic Problem Types List</h2> 
    <%- linkTo('Create a new Aritmetic Problem Type', addArithmeticProblemTypePath, {class: 'btn pull-right'}) %> 
</div> 
<% if (arithmetic_problem_types && arithmetic_problem_types.length) { %> 
    <% for (var i in arithmetic_problem_types) { %> 
    <div class="row todo-item"> 
    <div class="span8"> 
     <h3><%- linkTo(arithmetic_problem_types[i].title, arithmeticProblemTypePath(arithmetic_problem_types[i].id)) %></h3> 
    </div> 
    <div class="span4"><h3><i class="icon-list-alt"></i><%= arithmetic_problem_types[i].status; %></h3></div> 
    </div> 
<% } %> 
<% } %> 

Как я могу избавиться от этого сообщения и сделать его работу?

EDIT: Это начало _form.html.ejs файла:

<% 
    var isUpdate = params.action == 'edit' 
, formTitle = isUpdate ? 'Update this Arithmetic Problem Type' : 'Create a new Arithmetic Problem Type' 
, action = isUpdate ? arithmeticProblemTypePath(params.id) + '?_method=PUT' : arithmeticProblemTypePath 
, deleteAction = isUpdate ? arithmeticProblemTypePath(params.id) + '?_method=DELETE' : '' 
, btnText = isUpdate ? 'Update' : 'Add' 
, nameValue = isUpdate ? arithmeticProblemTypePath.name : '' 
, errors = params.errors; 
%> 
<form id="arithmetic-problem-type-form" class="form-horizontal" action="<%= action %>" method="POST"> 
    .... 
</form> 

EDIT2: Проверка на страницу, где я должен написать имя элемента и нажмите кнопку Добавить кнопка, я нашел этот

<div class="hero-unit"> 

    <form id="arithmetic-problem-type-form" class="form-horizontal" action="function (id) { 
     options.id = id; 
     return helpersBase.urlFor.action(options); 
    }" method="POST"> 
    <fieldset> 
    <legend>Create a new Arithmetic Problem Type</legend> 
    <div class="control-group"> 
     <label for="title" class="control-label">Title</label> 
     <div class="controls"> 
     <input class="span6" name="name" placeholder="enter name" type="text"> 

     </div> 
    </div> 

    <div class="form-actions"> 
     <input class="btn btn-primary" type="submit" value="Add"> 

    </div> 
    </fieldset> 
</form> 
</div> 

Действительно сообщение исходит от атрибута действия элемента формы, но как я могу решить эту проблему?

ответ

1

В сообщении сообщается, что запрошенный URL не найден. AKA 404

/arithmetic_problem_types/function%20(id)%20%7B%20%20%20%20%20%20options.id%20=%20id;%20%20%20%20%20%20return%20helpersBase.urlFor.action(options);%20%20%20%20%7D

, безусловно, не приятно смотреть URL. Поэтому я предполагаю, что что-то не так с атрибутом вашей формы action. Если это произошло, когда вы проверяете форму.

Если это то, что произошло, когда вы нажимаете на ссылку «Создать новый арифметический тип проблемы», то вы, вероятно, следует ставить скобки после addArithmeticProblemTypePath

+0

Я отправил некоторый код из _form.html.ejs файла ... –

+0

когда это сообщение происходит? – Floby

+0

, когда я нажимаю на кнопку ADD –

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