rails在提交时形成逻辑

时间:2013-02-15 14:21:12

标签: jquery ruby-on-rails

我有一个包含选择器的表单。有一个“添加新”选项,当选择它时,使用jquery动态生成文本输入。现在我需要做的是提交,检查是否存在文本输入,如果存在,请使用该信息更新表并忽略选择器。我的问题是我应该在模型中使用表单验证吗?或者有更合适的方式吗?

选择器:

<%= builder.select(:line_id, ['~ Add New ~'] + Line.all.collect {|p| [p.title, p.id ]}, { :include_blank => 'select line' }, :id => "line_selector")

jQuery的:

$(document).ready(function(){
    $("#line_selector").on("change", function() {
        if($(this).prop("selectedIndex") == 1) { 
            console.log($("#line_selector").prop("selectedIndex"));
            var new_line_title = prompt('Please enter a line title');
            if(!new_line_title.length) {
                console.log("no entry");
                return;
            };
            console.log(new_line_title);
            $(this).after($(document.createElement("input"))
                .attr("type", "text")
                .attr("id", "text")
                .attr("name", "text")
                .attr("value", new_line_title));
        };
    });
}); 

enter image description here

2 个答案:

答案 0 :(得分:0)

我不知道是否有更好的方法,但我会在自定义验证的模型中进行,如您所述。对我来说,这是定义应用程序行为的最佳位置。

答案 1 :(得分:0)

我只有一个文本字段的attr_accesor,并在模型中有一个after_initialize回调来设置line属性。

此外,这与您的问题本身无关,但是您是否计划在从下拉列表中选择其他值时隐藏输入?如果是这样,为什么不切换()并禁用/启用文本字段,而不是动态添加元素?