Ruby on Rails のようなビュー ヘルパーを作成する、エクスプレス ヘルパーというモジュールを開発しています。RoR に似た form_for メソッドを作成しようとしていますが、ejs の動作に問題があります。
これが私がビューを機能させたい方法です:
<% form_for("user", {multipart: true}, function(f){ %>
<%= f.label_for("username") %>
<%= f.text_field("username") %>
<%= f.submit() %>
<% }) %>
現在、内側のタグの周りにフォームタグを挿入しようとしていますが、それも機能していません。そして、 form_for メソッドを <%= タグに入れてみましたが、分離された例を処理できません <%= form_for("user", {multipart: true}, function(f){ %><% }) %>
これは私の現在のメソッドコードです
helpers.form_for = function(form_obj_string, html_options, formcall){
var form_obj = this[form_obj_string]
var old = formcall.toString();
var args = old.substring(old.indexOf("(") + 1, old.indexOf(")"));
var scr = old.substring(old.indexOf("{") + 1, old.lastIndexOf("}") - 1);
eval("t.formcall = function (" + args + "){" + scr + " }");
var form_helpers = {
formObj: form_obj,
label_for: function(element_string, html_options){
helpers.label_for(form_obj_string+"["+element_string+"]", html_options)
},
text_field: function(element_string, html_options){
helpers.text_field_tag(form_obj_string+"["+element_string+"]", html_options["value"], html_options)
},
text_area: function(element_string, html_options){
helpers.text_area_tag(form_obj_string+"["+element_string+"]", html_options["value"], html_options)
},
submit: helpers.submit_tag
}
return helpers.form_tag('/'+form_obj_string+'s',html_options) + formcall(form_helpers) + helpers.form_end_tag();
}
ヘルパーは問題なく動作しています。基本的にやりたいことは、比較的直感的な方法でフォームのボディの周りにフォーム タグを挿入することだけです。
アイデアや落胆はありますか?