无法使编辑功能正常工作

2023-12-03

我有两个型号Employee and Overtime Definition协会是这样设置的

Employee

class Employee < ActiveRecord::Base

has_many :overtime_definitions

加班定义

class OvertimeDefinition < ActiveRecord::Base

belongs_to :employee

我为员工创建了加班定义,一切看起来都很好。但是,我在为员工编辑相同的定义时遇到了麻烦。

overtime_definitions__controller:

    def new
        @flag = params[:flag]
        @employee = Employee.find(params[:id])
        @overtime = OvertimeDefinition.new
     end

      def create
        @employee = Employee.find(params[:overtime_definition][:employee_id])
        @overtime = OvertimeDefinition.new(params[:overtime_definition])
        if (params[:half_day_extra_duty_hours][:hour].to_s !="" || params[:half_day_extra_duty_hours][:minute].to_s !="")
          @overtime.half_day_extra_duty_hours   = params[:half_day_extra_duty_hours][:hour].to_s + ":" + params[:half_day_extra_duty_hours][:minute].to_s + ":" + "00"
        else
         @overtime.half_day_extra_duty_hours = nil
        end
        if (params[:full_day_extra_duty_hours][:hour].to_s !="" || params[:full_day_extra_duty_hours][:minute].to_s !="")
          @overtime.full_day_extra_duty_hours   = params[:full_day_extra_duty_hours][:hour].to_s + ":" + params[:full_day_extra_duty_hours][:minute].to_s + ":" + "00"
        else
         @overtime.full_day_extra_duty_hours = nil
        end
     if @overtime.save
      flash[:notice] = "Overtime Successfully Created for #{@employee.name}"
      redirect_to :action => 'search_overtime'
    end
  end

def edit
    @flag = params[:flag]
    @overtime = OvertimeDefinition.find(params[:id][:employee_id])
    @employee = Employee.find(params[:id])
  end

  def update
    @employee = Employee.find(params[:id])
    @overtime = OvertimeDefinition.find(params[:id])
    if @overtime.update_attributes(params[:overtime_definition])
     flash[:notice] = "Overtime Successfully Updated for #{@employee.name}"
            redirect_to :action => 'search_overtime'
    else
     render :action => 'edit',:flag=>params[:flag]
    end
  end

在编辑方法中尝试过这些

  1. @overtime = OvertimeDefinition.find(params[:id][:employee_id])

    #给我can't convert Symbol into Integer error.

  2. @overtime = OvertimeDefinition.find(params[:id])

    #给我Couldn't find OvertimeDefinition with ID=1353错误。实际上1353是该员工的ID。

    3.@overtime = OvertimeDefinition.find(params[:employee_id])

    #给我couldn't find OvertimeDefinition without an ID error.

我的 _search_overtime_employee_list 有这些新操作和编辑操作的链接

<%=link_to "Calculation" ,:action => "new",:id=>employee.id, :flag=>"Calculation" %>

<%= link_to "Re-Calculate",:action => "edit",:id=>employee.id,:flag=>"Re-Calculate" %>

新的.rhtml

<%= form_tag :action => 'create' do %>
<%= render :partial =>'form'%>
<center>
    <%= submit_tag "Save",:onclick=>"return validate()",:class=>"buttons"%>
</center>
<% end %>
<%= link_to "Back" ,:action => "search_overtime" %>

编辑.rhtml

<%= form_tag :action => 'update', :id=>@employee.id,:flag=> params[:flag],:value=>params[:id] %>
<%= render :partial =>'form'%>
<center>
    <%= submit_tag "Update",:onclick=>"return validate()",:class=>"buttons"%>
</center>
<%= link_to "Back" ,:action => "search_overtime" %>

_form.html

员工详情

<table cellspacing="5">
 <tr>
    <td><b>Employee Code</b></td>
    <%= hidden_field 'overtime_definition','employee_id',:value=>params[:id] %>
    <td><%= @employee.employeeid %></td>
    <td><b>Employee Name</b></td>
    <td><%= @employee.personnel.display_full_name %></td>
</tr>
<tr>
    <td><b>Department</b></td>
    <td><%=  @employee.department ? @employee.department.name : "" %></td>
    <td><b>Designation</b></td>
    <td><%= @employee.designation ? @employee.designation.name : "" %></td>
    <td><b>Location</b></td>
    <td><%= @employee.location.name%></td>
</tr>
</table>

</br>
<fieldset>
  <table cellspacing="5">

    <%= form_for :overtime_definition, :builder => LabelFormBuilder do |od| %>
    <tr>
      <td>
      <label for="half_day_extra_duty_hours">
       Half Day Extra Duty Hours
      </label>
      </td>
      <td class ="datefamily">
      <%= select_time(@overtime.half_day_extra_duty_hours, {:include_blank => true, :time_separator => ":",:prefix => "half_day_extra_duty_hours"})%>
       </td>
    </tr>
    <tr>
      <td>
      <label for="full_day_extra_duty_hours">
       Full Day Extra Duty Hours
      </label>
      </td>
     <td class ="datefamily">
     <%= select_time(@overtime.full_day_extra_duty_hours, {:include_blank => true, :time_separator => ":",:prefix => "full_day_extra_duty_hours"})%>
      </td>
  </tr>
   <tr>
    <%= od.sr_check_box :is_salary_basis, {}, true, false, :label => "Is Salary Basis"%>
    </tr>
     <tr>
    <%= od.sr_check_box :is_fixed_amount, {}, true, false, :label => "Is Fixed Amount"%>
    <td colspan="2" id="ov_hm" style="display: none">
     Half Day Amount
    <%= od.text_field :half_day_amount, :onkeypress => "return numbersonly(event)", :style => "width:40px" %>
     </td>
     <td colspan="2" id="ov_fm" style="display: none">
     Full Day Amount
     <%= od.text_field :full_day_amount, :onkeypress => "return numbersonly(event)", :style => "width:40px" %>
     </td>
 </tr>
<%end%>

</table>

我刚刚完全失去了进行编辑操作的工作。非常感谢任何帮助!


您当前的edit链接是:

<%= link_to "Re-Calculate",:action => "edit",:id=>employee.id,:flag=>"Re-Calculate" %>

在您的编辑操作中:

@overtime = OvertimeDefinition.find(params[:id][:employee_id]) ## 给我无法将符号转换为整数的错误。

根据编辑链接,您直接传递:id在查询参数中,您可以将其访问为params[:id]。没有params[:id][:employee_id]在你的参数哈希中,所以当你说params[:id][:employee_id]Ruby 尝试转换:employee_id为一个符号的整数。因此,出现错误。

我认为你应该传递 OvertimeDefinition 记录的 id:id从你的链接。并将其访问为

@overtime = OvertimeDefinition.find(params[:id])

在控制器的操作中。

@overtime = OvertimeDefinition.find(params[:id]) ## 给我不能 找到ID=1353的OvertimeDefinition错误。实际上1353是id 那个员工。

这是因为你正在通过employee id in params[:id]显然这是行不通的。您需要在此处传递 OvertimeDefinition id。

@overtime = OvertimeDefinition.find(params[:employee_id]) ## 给我 无法找到没有 ID 错误的 OvertimeDefinition。

你没有通过任何:employee_id在查询参数中edit关联。因此,params[:employee_id] 将为 nil 并且find方法失败,因为您没有向它传递任何 id。

解决方案 :

更新你的edit link如下:

<%= link_to "Re-Calculate",:action => "edit",:id=> @overtimedefinition.id , :employee_id => employee.id,:flag=>"Re-Calculate" %> 

Replace @overtimedefinition.id具有适当的 OvertimeDefinition 记录 ID。由于您没有共享代码,我不知道 OvertimeDefinition 变量的名称。

更新你的edit行动为:

  def edit
    @flag = params[:flag]
    @overtime = OvertimeDefinition.find(params[:id])
    @employee = Employee.find(params[:employee_id])
  end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使编辑功能正常工作 的相关文章

  • Partial、Layout、Template 渲染问题

    情况 因此 当我访问页面时 我希望能够将布局应用到部分 我想要三个具有相同布局的部分 现在 我正在尝试使用以下命令来执行此操作 where shared services essay是这样的 p blah p div blah div
  • 如何验证数值的小数位数?

    我在中间进行了验证 如下所示 validates numericality of shoe size message gt Please input a number 但这还不够 因为用户可以输入一些值 例如 42 222222221212
  • Rails 中的并行方法

    我的 Rails Web 应用程序有数十种方法 从调用 API 到处理查询结果 这些方法具有以下结构 def method one batch query API process data end def method nth batch
  • 使用Rails UJS,如何从函数提交远程表单

    我正在使用Rails UJS 我有一个表单设置来进行远程提交 如下所示
  • ruby on Rails,会话过期通知

    我正在使用 ruby 1 9 3 和 Rails 3 2 我的实际会话处理如下所示 会话助手 def sign in user cookies remember token value user remember token expires
  • 从部分重定向回具有部分的同一页面后保留验证错误

    因此 我试图从我的表单中获取错误 该表单在我的 root path 中呈现为部分内容 在我尝试发布它但失败 或成功 后 我想重定向回 root path 但是 redirect to 决定不保存任何验证信息 想知道如何做到这一点 class
  • Eventmachine start_tcp_server 无接受器 - 端口正在使用或需要 root 权限(运行时错误)

    我已经 3 天无法运行本地服务器了 重新启动我的计算机没有帮助 有几次 在反复尝试大约 40 50 次之后 它随机地起作用了 我不明白为什么 我尝试过一次不同的端口并且有效 但从那以后 没有端口有效 每次我尝试运行我的 Rails 服务器时
  • Memcachier 达到缓存限制时 Heroku 请求超时

    我使用 Memcachier Dalli 作为客户端 将 Rails 应用程序部署到 Heroku 我正在使用免费插件 提供 25 MB 缓存 我们开始收到来自heroku的请求超时 经过调试 我们发现手动刷新Memcachier解决了问题
  • Twitter Bootstrap 中下拉链接的模态

    我正在尝试从下拉菜单中的链接进行模式启动 该模式似乎已启动 网站变为灰色 但看不到 来自不在下拉列表中的常规链接的模态工作得很好 我对 jquery 进行了愚弄 但由于我是 jquery 的新手 所以没有任何结果 这是我的网站代码
  • 在 Rails 中禁用连接池以使用 PgBouncer

    我们有一个 Ruby on Rails 4 2 8 项目 可以访问大型 PostgreSQL 数据库 我们将使用 PgBouncer 添加一个新的连接池服务器 由于 PgBouncer 将处理数据库连接池 我们是否需要关闭 Rails 自动
  • Rails 3 Mechanize - SocketError:getaddrinfo:主机或名称未知

    我正在使用 mechanize 但出现此错误 有人可以帮帮我吗 我已将元刷新设置为 true 错误日志 SocketError getaddrinfo Host or name not known form C Ruby192 lib ru
  • Rails 4 的 mobile_fu

    我正在尝试将我的应用程序从 Rails 3 2 13 切换到 Rails 4 在此过程中 我遇到了一个主要障碍 我使用 gem mobile fu 来确定用户是否来自移动设备 该 gem 需要 Railties 3 2 13 但 Rails
  • 为什么 Rails 中的区域设置充当全局(使用 Thin 时)?

    我刚刚意识到在控制器中设置区域设置的推荐 Rails 方法 before filter set locale def set locale I18n locale params locale I18n default locale end
  • 为什么||和 或 在 Rails 中的行为有所不同? [复制]

    这个问题在这里已经有答案了 可能的重复 i true 和 false 在 Ruby 中是真的吗 https stackoverflow com questions 2802494 i true and false in ruby is tr
  • 多次部署后 Heroku Slug 大小

    我有一个红宝石 on Rails非常接近 slug 大小限制 300mb 的应用程序 我已经尽可能地减小了尺寸 slugignore但还没有得到我想要的结果 一时兴起 我尝试创建一个新的Heroku应用程序并向其部署相同的 git 存储库
  • Rails 4 和 Turbolinks - 元标签未更改

    我有一个启用了 Turbo Links 的 Rails 4 应用程序 但在更改页面时无法刷新元标记 不是完全刷新 我读到元标记需要包含在加载涡轮链接的 JavaScript 之前 但它没有效果 完全刷新可以完成这项工作 但不幸的是这不是我所
  • Capybara with Rails:如何仅查找不可见元素

    我正在 Rails 项目 Rails 5 2 0 中使用 Capybara capybara 3 1 0 进行系统测试 确保元素不可见的方法是什么 我当时用的是visible false选项 直到我发现它也匹配可见元素 例如我使用 find
  • 使用 Passenger + Apache 相对于 Webrick 的优势

    我想说服我的管理层 使用 Apache 乘客设置是继续生产的方法 而不是使用 webrick 或 mongrel 我从网上找到了一些观点 如果您能添加您的想法 那将非常有帮助 因为这将有力地帮助我表达我的观点 欢迎提供技术细节 如果您有任何
  • 如何以 Rails 形式将图像从 上传到具有 Rails Active Storage 的 S3?

    正如标题中所述 我正在尝试使用 Rails 的 Active Storage 从嵌套在 Rails 表单中的元素将图像上传到我的 S3 存储桶 到目前为止我已经能够使用使用 Active Storage 上传图像 这User class h
  • Rails 3.1 中何时将图像放入 app/assets 以及何时放入 /public/images?

    我仍然不太明白 在这种情况下 在 Rails 3 1 中将图像放在哪里 图像被处理 例如通过回形针或蜻蜓 并存储在文件夹中 不使用像 s3 这样的外部服务 f e 在开发中 当我只有图像时 我将在样式表中使用它 例如背景 图标 AppSto

随机推荐

  • jQuery document.createElement 等效吗?

    我正在重构一些旧的 JavaScript 代码 并且正在进行大量 DOM 操作 var d document var odv d createElement div odv style display none this OuterDiv
  • 从以 http 运行的网站使用 https 访问 CDN

    我正在开发一个网站 该网站将采用http 我试图包含来自 google cdn 的 jquery 给出的答案here says 使用协议相关的 URL 可让您轻松避免混合内容 安全错误 from 谷歌CDN 它被视为 我们建议您通过 HTT
  • 什么是指向数组数据开头的 Python 缓冲区对象?

    A np arange 12 B A reshape 3 4 A 0 42 print B print A print np may share memory A B print A data B data 运行上面的代码 令我惊讶的是pr
  • Cordova 网络 isOnline 仅在 WiFi 上返回 true

    以下仅当我有 WiFi 时才注销 在 4g 或任何移动互联网类型上则不然 看起来不太靠谱 有什么更好的检测在线 离线状态的想法吗 rootScope on cordovaNetwork online function event netwo
  • 尝试将 XInclude 与 Java 结合使用并使用 xml:id 解析片段

    我一直在尝试让 XInclude 在我的 XML 文档中工作 最后让它在 Oxygen XML 中工作 我用 Oxygen XML 来编写 XML 文档 然后我转到我的应用程序 用 Java 编写 但它似乎不支持任何形式的 XPointer
  • 将 pandas 中的列表拆分为列

    我有一个像这样的数据框 df pd DataFrame ID ID1 ID2 ID3 Values AB BC np NaN AB CD df ID Values 0 ID1 AB BC 1 ID2 NaN 2 ID3 AB CD 我想将列
  • MssqlHook气流连接

    我是使用气流的新手 我需要做的是使用 MssqlHook 但我不知道如何使用 我应该在构造函数中给出哪些元素 我在气流中有一个名为connection test的连接 我不完全理解类中的属性 class MsSqlHook DbApiHoo
  • 计算多个数据集的日、月和年平均值

    我有一个数据框 MS NR SS NR DATE HOUR VALUE 1 13095010 68 1 01 2014 0 00 00 9 8 2 13095010 68 1 01 2014 1 00 00 8 0 3 13095010 6
  • css3背景大小:覆盖在调整大小时留下空白

    body margin 0 padding 0 position relative background url images imgs backgrnd png no repeat background size cover The ba
  • 用逗号分割字符串但忽略双引号内的逗号?

    我有一些如下所示的输入 A B C D12121 E F G H I9 I8 J K 逗号分隔的值可以按任何顺序 我想用逗号分隔字符串 但是 如果双引号内有某些内容 我需要它忽略逗号并删除引号 所以基本上 输出将是这个字符串列表 A B C
  • tkinter:将多个按钮 lambda 映射到一个标签?

    描述 我希望能够单击一个按钮并将其值发送到标签小部件 lab 1 我知道要执行一个按钮 您必须使用command lambda lab 1 configure text 0 但是当我使用了一个标签时 你会如何将值打印到标签上for循环在嵌入
  • 如何在iOS中的prepareForSegue之前执行按钮按下动作?

    我正在创建一个 iOS 应用程序 在运行方法prepareForSegue 之前 我想在按下按钮时执行分配操作 我使用主要故事板创建了所有控件 某些按钮的执行顺序是 按钮按下动作 gt prepareForSegue 但对于某些按钮来说是
  • Asp.net cookieless sessionId url 位置

    我正在开发一个移动网站 我们不能依靠手机访问该网站来获得 cookie 支持 我正在对会话使用 cookieless 选项 想知道是否有办法指定 sessionId 在 URL 中的放置位置 现在看起来是这样的 http www somes
  • NASM:远程调用,段和偏移量存储在寄存器中

    我已经将代码段和偏移值存储在两个寄存器中 比如说AX and BX分别 在 NASM 中 我如何编码远程调用AX BX 我试过call AX BX 但我得到了错误invalid combination of opcode and opera
  • 用 Pandas 数据框中尽可能少的日期填充缺失的日期值

    我有一个带有日期列的数据框 df pd DataFrame date 2014 10 01 np nan 2015 09 30 np nan np nan 2019 06 03 现在我想用 pandas 中尽可能少的日期值来估算缺失的日期值
  • 在 Spritekit 中取消暂停视图时,fps 显着下降

    当在 SpriteKit 中取消暂停视图时 我注意到 fps 显着下降 帧速率下降在 5 10fps 之间 我用空项目 Spritekit 游戏模板 尝试了这个 这是代码 if self view paused self view paus
  • 设置运输跟踪号码后以编程方式发送电子邮件

    我正在寻找一种在将跟踪号码分配给订单时以编程方式向用户发送电子邮件的方法 我需要能够以编程方式执行此操作 因为我正在使用外部源来填充跟踪信息 我想我在这里真正寻找的是一个特定的触发器或事件 我可以用它来触发通常在管理员单击 发送跟踪信息 按
  • PHP 警告:mysqli_connect(): (HY000/2002):连接被拒绝

    我正在使用 PHP 5 5 和 MAMP 从下载here 我有一个像这样的基本脚本 当我运行这个脚本时 我收到此错误 PHP Warning
  • 变量“a”的范围是什么?

    可能的重复 Python变量作用域问题 Python 手册将范围定义为 范围定义了块内名称的可见性 如果是本地人 变量在块中定义 其范围包括该块 如果 定义发生在功能块中 范围扩展到任何块 包含在定义块中 除非包含块引入 名称的不同绑定 我
  • 无法使编辑功能正常工作

    我有两个型号Employee and Overtime Definition协会是这样设置的 Employee class Employee lt ActiveRecord Base has many overtime definition