1

我开发了一个名为 express helpers 的模块,它使 ruby​​ on rails-like view helpers。我正在尝试制作一个类似于 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();
}

我的助手工作没有问题,基本上我想做的就是以相对直观的方式在表单主体周围注入表单标签。

有什么想法或沮丧吗?

4

0 回答 0