使用 Javascript/JQuery/Rails 3 动态添加新行

2024-03-04

我正在构建一个时间表表单,其中包含一个日历,使用户能够选择指定的日期并搜索项目。我有这个功能。我基本上拥有的是这样的:

一旦用户搜索他们的项目并按加号按钮,即指定的项目。在本例中是 Asda,用户然后单击加号图标,这将创建一个新行并将其放入“项目任务”表中。如何在 Javascript/JQuery 中做到这一点?

很抱歉问这个可能被视为基本问题的问题,但我仍在学习 Javascript/JQuery。

我目前已链接到加号图标project_project_tasks_path( project.id )。这只是暂时的。

这是我到目前为止所拥有的:

    <div class="left">
<table border="2" width="" id='projects' class='datatable'>
    <thead>
        <tr>
            <th>Number  &nbsp</th>
            <th>Name</th>
            <th></th>
        </tr>
    </thead>
    <tbody>
    <% @projects.each do |project| %>
        <tr>
            <td><%= project.project_number %></td>
            <td><%= project.project_name %></td>
            <td><%= link_to image_tag("icons/add.png"), project_project_tasks_path( project.id ), :remote => true %></td>
                <!-- link_to image_tag("icons/add.png"), tasklist_path(project.id), :as => "tasklist" -->
                        </tr>
    <%- end -%>
  </tbody>
</table>
</div>

<div class="right">
<b>Recently Viewed</b>
<table>
  <tr>
    <th>Project No.</th>
    <th>Project names</th>
    <th>Project Leader</th>
    <th></th>
  </tr>
  <tr>
    <td>123</td>
    <td>Test</td>
    <td>1</td>
    <td><%= link_to image_tag("icons/add.png") %></td>
  </tr>
</table>
</div>
</fieldset>

<fieldset>
    <b><center>Hours for Week commencing: <span id="startDate"><%= Date.today.beginning_of_week.strftime('%d/%m/%Y') %></span></center></b>
</fieldset>

<!-- Task list table -->
<div style="float: right; width: 300px; padding-left: 20px;">
  <fieldset>
    <b>Tasks for project</b>
    <ul id="task_list">

    </ul>
  </fieldset>
</div>

<!-- Hours list table -->
<fieldset>
    <table>
        <tr>
            <td>Leave</td>
            <td><input class="dayinput" type="text" name="Leave"></td>
        </t>
        <tr>
            <td>TOIL</td>
            <td><input class="dayinput" type="text" name="TOIL"></td>
        </tr>
        <tr>
            <td>Sick</td>
            <td><input class="dayinput" type="text" name="Sick"></td>
        </tr>
        <tr>
            <td>Total</td>
            <td><input id="total" class="total_low" type="text" value="0" disabled="">
        </tr>
    </table>
</fieldset>

Edited:

我创建了一个任务列表.js.erb如下:

$('#task_list').html('');

<% @project.project_tasks.each do |task| %>
  $('#task_list').append('<ul><%= task.task_name %>');
<% end %>

项目总监

 def index
    # check if we've got a project id parameter
    if( params[:project_id].nil? )
      @project = nil
    else
      @project = Project.find(params[:project_id])
    end

    if @project.nil?
      @project_tasks = ProjectTask.all
    else
      @project_tasks = Project.find(params[:project_id]).project_tasks
    end
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @project_tasks }
      format.js   # index.js.erb
    end
  end

根据所做的更改,它输出:

JQuery Ui 自动完成代码:

$(function() {
    function log(message) {
        $( "<div/>" ).text( message ).prependTo("#log");
    }
    $("#tags").autocomplete({
        source : function(request, response) {
            $.ajax({
                url : "/projectlist",
                dataType : "json",
                data : {
                    style : "full",
                    maxRows : 12,
                    term : request.term
                },
                success : function(data) {
                    var results = [];
                    $.each(data, function(i, item) {
                        var itemToAdd = {
                            value : item,
                            label : item
                        };
                        results.push(itemToAdd);
                    });
                    return response(results);
                }
            });
        }
    });
}); 

使用 jQuery 添加到 DOM 非常简单,使用append 或 prepend 方法。

$('element_to_add_to').append('the html to append');
$('element_to_add_to').prepend('the html to append');

还可以查看 jQuery 文档中的空方法。

另外,你有一些不好的标记。任务列表<ul> has no <li>那里的桌子还有一个额外的</tr>.

编辑:从您更新的帖子来看,您似乎不仅想在表中插入一行,而且同时将数据保存到数据库中。在这种情况下,您需要对控制器方法进行 ajax 调用,该方法会将数据保存在数据库中。如果调用成功,则将更新的行添加到表中。

$.ajax({
    type: "POST",
    url: "path to your route",
    data: "the data to send to your controller",
    success: function(data){
        // here is where you process the return value from your controller method
        // the data variable will hold the return value if the call is successful
        // you can make your controller return the html to be inserted in your table
        // and insert it from here or just return a status message and build and add
        // the html manually here.
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Javascript/JQuery/Rails 3 动态添加新行 的相关文章

  • Node.js:如何在检索数据(块)时关闭响应/请求

    我正在用 node js 构建一个应用程序 它加载多个页面并分析内容 因为 node js 发送块 所以我可以分析这些块 如果一个块包含例如索引 nofollow 我想关闭该连接并继续其余部分 var host example com to
  • 文件上传控件 OnChange 事件 JQuery

    我正在尝试使用 AJAX JQUERY 和 Net HTTPHandler 构建页面来上传文件 如下所示http dotnet dzone com news async file upload jquery and http dotnet
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • jquery.validate 中是否有一个函数可以像重置表单一样重置单个字段?

    我想调用 jquery 函数来手动删除单个字段中的错误并重置错误标记 是否有一个函数可以执行此操作 类似于 resetForm 函数 您可以执行以下操作来验证单个字段 your field valid 也许它会对某人有所帮助 Thanks
  • 音频 blob 的 URL.createObjectURL 在 Firefox 中给出 TypeError

    我正在尝试从创建的音频 blob 创建对象 URLgetUserMedia 该代码在 Chrome 中可以运行 但在 Firefox 中存在问题 错误 当我打电话时stopAudioRecorder 它停在audio player src
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 动态地将工具提示文本设置为 div 元素

    我正在尝试动态地将工具提示文本设置为容器 div 并对我刚刚添加到有序列表的每个 div 元素 elem Alias Status 使用 jQuery function addNewElement elem var li li li li
  • 通过 CDN 使用 Dojo 时如何加载自定义 AMD 模块?

    我正在使用 google 的 CDN 并尝试使用他们的加载程序加载我自己的 AMD 模块 我知道我做错了什么 但我被困住了 有任何想法吗
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 我可以使用 jQuery 打开下拉列表吗

    对于 HTML 中的下拉列表
  • 查找 Rails 应用程序中未使用的代码

    如何查找正在运行和未运行的代码生产中 该应用程序经过充分测试 但还有很多测试unused代码 因此 他们在运行测试时得到覆盖 我想重构并清理这个烂摊子 它一直在浪费我的时间 我有很多后台工作 这就是为什么我希望生产环境来指导我 在 Hero
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如
  • Jquery 验证不能正确验证数字?

    我在使用 jquery 非侵入式验证验证数字时遇到问题 我使用的版本是 ASP NET MVC 3 jQuery 1 9 1 jQuery 用户界面 1 10 1 JQuery 验证 1 11 0 我试图验证的输入是
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28
  • Javascript/Jquery:确定用户是否使用鼠标滚轮、滚动条或键盘滚动

    我正在尝试让用户界面正常工作 如果他们使用鼠标滚轮 我需要让它以一种方式滚动 如果他们使用滚动条 我需要让它以另一种方式滚动 如果他们使用键盘 我需要让它以另一种方式滚动 我相信滚轮和滚动条都充当鼠标事件 但是当单击滚动条时我无法让 jav
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • 如何将 Excel 文件转换为 .csv 文件?

    我正在为 Honeywell Dolphin 6100 开发一个应用程序 这是一款带有条形码扫描仪的移动计算机 使用 Windows CE 5 0 等操作系统 我想创建一个小应用程序 负责将 excel 文件转换为 csv 文件 在Win
  • 可点击的SVG图像来运行方法

    我创建了一个需要交互的地图 火车 的 SVG 图像 当单击地图的一部分时 颜色将会改变 并且将执行控制事物的方法 通过树莓派 将按钮连接到插槽很简单 我猜想 self path clicked connect self some func
  • 你能让mockito(1.10.17)使用接口中的默认方法吗?

    我是mockito的忠实粉丝 不幸的是我的项目之一 https github com fge throwing lambdas它使用 Java 8 它对我来说失败了 设想 public final class MockTest Test p
  • 使用谷歌日历 API oauth2 服务帐户(node.js)模拟用户

    我正在尝试通过 google calendar API 使用服务器进行服务器身份验证 他们在文档中提到您可以冒充用户 我已向我想要模拟的帐户添加了所有者权限 并确保启用了域范围的委派 据我所知 user example 应该指定模仿者 但它
  • WPF 中是否有类似于 DataTemplate 的 Style.BasedOn 的东西?

    目前 我有两个非常大的 DataTemplate 对象来在两个列表框中显示两组项目 DataTemplate 在两个 ListBox 的 ItemContainerStyle 属性中设置的两个 Style 的 ContentTemplate
  • 要求 CLI 部署到不同的环境?

    是否可以使用 Alexa Skill Kit 的ASK CLI https developer amazon com docs smapi ask cli command reference html deploy command depl
  • R 中的多重随机采样

    我目前有一个名为 Liquidation 的数据框 我想在其中运行 30 个随机样本 每个样本有 1000 个观察值 指定哪个帐户来自哪个样本 然后将其合并到一个新的数据框中 其中包含所有 30 个样本 以下是我在使用 dplyr 包进行随
  • 如何获取已登录的本地 Windows 用户列表?

    我正在尝试为 Windows 编写一个更快的用户切换应用程序 Win L 选择用户非常麻烦 如果我以管理员身份启动任务管理器 它会显示活动用户 我可以选择一个用户并 连接 如果我输入他们的密码 如何获取所有用户 或所有活跃用户 的列表 我正
  • 如何在 VS Code 中设置 Julia?

    我拥有纯 Windows Visual Studio 编程背景 几乎没有 Linux 经验 似乎可以使用VS Code https code visualstudio com 在 Julia 中编程 但我不知道如何正确设置 有人有好的例子吗
  • Printf 未在此范围内声明

    我刚刚开始学习 C 但是我提到的书中的第一个程序会生成一个错误 printf 未在此范围内声明 I am typing the code exactly as it is given in the book Still the error
  • 升级到 Angular 13 后的 Mixins / Webpack 问题

    将我的项目升级到 Angular 13 后 我在运行时收到以下错误ng serve 我也包括两者package json and webpack config js以下文件 我已经尝试删除node modules文件夹并运行npm inst
  • 从使用 JavaScript 的网站将数据抓取到 Google 表格

    我正在尝试将数据从以下网站导入到 Google 表格 我想导入当天的所有比赛 https www tournamentsoftware com tournament b731fdcd a0c8 4558 9344 2a14c267ee8b
  • 枚举可以保存大于 INT_MAX 的无符号整数吗?

    enum Some Flag SOME FLAG A 0x00000000u SOME FLAG B 0x00000001u SOME FLAG C 0x00000002u SOME FLAG Z 0x80000000u uint32 t
  • 从 asyncio StreamReader 读取

    我正在尝试扩展使用流式读取器 写入器的 python asyncio HTTP 服务器示例 code https docs python org 3 4 library asyncio stream html tcp echo server
  • 从java中删除文件夹[重复]

    这个问题在这里已经有答案了 在Java中 我想删除包含文件和文件夹的文件夹中存在的所有内容 public void startDeleting String path List
  • VS2012 ProjectTypeGuids 安装 ASP.NET 和 Web Tools 2013.1 后打开时丢失

    我已经在 Visual Studio 2012 中安装了 ASP NET 和 Web Tools 2013 1 我有一个解决方案 其中有一个 ASP NET MVC 4 项目 具有以下项目类型指南
  • Spark:如何通过mapInPandas正确转换数据帧

    我正在尝试通过最新的 Spark 3 0 1 函数转换具有 10k 行的 Spark 数据框地图熊猫 https spark apache org docs latest sql pyspark pandas with arrow html
  • 如何在 Rust 中连接静态字符串

    我正在尝试连接静态字符串和字符串文字来构建另一个静态字符串 以下是我能想到的最好的方法 但它不起作用 const DESCRIPTION static str my program const VERSION static str env
  • 将两个 div 粘贴到另一个 div 上

    这就是我想要实现的目标 我有3个div 我们称它们为左中和右 中心 div 的宽度是动态的 它可以是 100px 200px 等 具体取决于中心 div 所保存的图像 如何做到无论中心 div 大小如何 左侧和右侧 div 都粘在中心 di
  • 使用 Javascript/JQuery/Rails 3 动态添加新行

    我正在构建一个时间表表单 其中包含一个日历 使用户能够选择指定的日期并搜索项目 我有这个功能 我基本上拥有的是这样的 一旦用户搜索他们的项目并按加号按钮 即指定的项目 在本例中是 Asda 用户然后单击加号图标 这将创建一个新行并将其放入