使用javascript返回值,然后将其添加到ruby数据库中

using a javascript returned value and then adding it to a ruby database

本文关键字:添加 ruby 数据库 javascript 返回值 然后 使用      更新时间:2023-09-26

我有一个字符串,需要将其转换为要存储在Ruby数据库中的日期属性。有一个javascript函数收集数据并将其提交给一个ruby方法,该方法又提交给数据库。然而,其中一个字段是"日期"字段。不是一个"DateTime"字段,所以我不能使用由js提供的Date()函数。我所拥有的字符串已经是所需的格式,它只是让db识别它。

html

<form action="/submiteffort" id="effort_form" method="post">
    <input type="hidden" id="week_commencing" name="week_commencing" value="x">
    <input type="hidden" id="task_id" name="task_id" value="x">
    <input type="hidden" id="effort_hours" name="hours" value="0">
</form>
<!-- Javascript code to submit the hidden form -->
<script>
function submiteffort( elem, name )
{
    var date = getdate();
    $("#week_commencing").val(date);
    $("#effort_hours").val( $( elem ).val() );
    $("#task_id").val( name );
    $("#effort_form").submit();
    return true; 
}

获取当前日期()函数

function getdate()
{
    var myspan = document.getElementById('startDate');
    var span_textnode = myspan.firstChild;
    var span_text = span_textnode.data;
    myDateParts = span_text.split("/");
    var d = myDateParts[0];
    var dd = days(d);
    var m = myDateParts[1];
    var subSection2 = m.substring(1,0);
    if (subSection2 == "0") {
            mm = m;
    }
    else {
        mm = "0" + myDateParts[1];
    }

    var yy = myDateParts[2];
    var actDate = yy + "-" + mm + "-" + dd;
    return actDate;
}

提交方法

def submit
    effort = Effort.new
    effort.user_id = 10 #current_user.id
    effort.project_task_id = params[:task_id]
    effort.week_commencing = params[:wc]
    effort.hours = params[:hours]
    effort.save
    respond_to do |format|
      format.html
      format.js 
    end
  end

我如何让我的数据库认识到,我想要的值需要一个"日期",并提交给数据库?

如果您以Date识别的格式提交日期,则应该为您完成转换。这要求将week_commencing声明为:date类型的列。

查看您的log/development.log,看看params为所讨论的请求设置了什么。确保生成的日期正确地通过。