Javascript 如何在rails中将参数从form_for方法传递到controller方法?

Javascript 如何在rails中将参数从form_for方法传递到controller方法?,javascript,jquery,ruby-on-rails,ruby,twitter-bootstrap,Javascript,Jquery,Ruby On Rails,Ruby,Twitter Bootstrap,我有一个引导模式,当我点击按钮时,该引导模式将被调用(打开弹出菜单),并传递不同的报价id 这个弹出菜单打开一个表单(如编辑表单),我编辑了所有信息,然后单击编辑按钮,然后只更新第一条记录 例如,我想编辑报价id=1的信息,当填写所有表格并提交时,报价id=1更新不报价id=5 所以我不知道我到底错在哪里,我错过了什么 在同一页面上编辑按钮和模型(\u employee\u details.html.erb) 编辑按钮 <div class="edit-recr-wrp1">

我有一个引导模式,当我点击按钮时,该引导模式将被调用(打开弹出菜单),并传递不同的报价id

这个弹出菜单打开一个表单(如编辑表单),我编辑了所有信息,然后单击编辑按钮,然后只更新第一条记录

例如,我想编辑报价id=1的信息,当填写所有表格并提交时,报价id=1更新不报价id=5

所以我不知道我到底错在哪里,我错过了什么

在同一页面上编辑按钮和模型(\u employee\u details.html.erb

编辑按钮

<div class="edit-recr-wrp1"> 
       <button type="button" class="btn btn-primary fa fa-pencil-square-o" data-toggle="modal" data-target="#exampleModal1" data-offer_id="<%= emp['offer_letter_id'] %>" data-employee_id="<%= emp['employee_id'] %>"></button>               
</div>
routes.rb

  resources :hr
  get 'hr/edit'
  post 'hr/update'

关于编辑和更新方法,您有一些遗漏的概念。你应该通过id找到,我的意思是应该是

@employees = EmployeeDetail.find(id)
其次,请写一个raiseinupdate方法来检查是否真的传递了数据或者只传递了第一个数据,这就是为什么它只更新了你的第一列。 在def更新中=>

raise params.inspect

然后,您将确定自己的参数是否正确,def employee_参数方法是否有效?

您对编辑和更新方法有一些误解。你应该通过id找到,我的意思是应该是

@employees = EmployeeDetail.find(id)
其次,请写一个raiseinupdate方法来检查是否真的传递了数据或者只传递了第一个数据,这就是为什么它只更新了你的第一列。 在def更新中=>

raise params.inspect
然后您将确定自己的参数是否正确,def employee_参数方法是否有效?

您应该使用

def update
    @employees = EmployeeDetail.find(params[:employee_details][:offer_letter_id])
如果
offer\u letter\u id
是您的主键或

def update
    @employees = EmployeeDetail.find_by(offer_letter_id: params[:employee_details][:offer_letter_id])
在任何其他情况下…

您应该使用

def update
    @employees = EmployeeDetail.find(params[:employee_details][:offer_letter_id])
如果
offer\u letter\u id
是您的主键或

def update
    @employees = EmployeeDetail.find_by(offer_letter_id: params[:employee_details][:offer_letter_id])


在任何其他情况下…

对不起,我不清楚这一点。首先你说你想编辑订单id 1,订单id被编辑了,那么错误是什么呢?其次,不清楚如何以及何时渲染部分。您是否为订单列表中的每个元素都呈现部分?我的问题是当我编辑offer\u id=4的信息时,然后更新offer\u id=1的所有信息,而不是offer\u id=4。我编辑了offer\u id=4的信息,然后应该只更新offer\u id=4的信息,而不是offer\u id=1对不起,但我不清楚。首先你说你想编辑订单id 1,订单id被编辑了,那么错误是什么呢?其次,不清楚如何以及何时渲染部分。您是否为订单列表中的每个元素都呈现部分?我的问题是当我编辑offer\u id=4的信息时,然后更新offer\u id=1的所有信息,而不是offer\u id=4。当我使用@employees=EmployeeDetail.find(id)时,我编辑了offer\u id=4的信息,然后应该只更新offer\u id=4的信息,而不是offer\u id=1,然后我得到了以下错误。如果@employees.update(employees_参数)重定向到:action=>“internal_employeed_page”,则找不到'id'=def update@EmployeeDetail=EmployeeDetail.find(params[:id])的EmployeeDetail.find(params[:id]),请给我一个加薪输出的快照。raise params.inspects并给出输出=>raise EmployeeDetail.first.inspects当我使用@employees=EmployeeDetail.find(id)时,我得到了以下错误。如果@employees.update(employees_参数)重定向到:action=>“internal_employeed_page”,则找不到'id'=def update@EmployeeDetail=EmployeeDetail.find(params[:id])的EmployeeDetail.find(params[:id]),请给我一个加薪输出的快照。raise params.inspectand还提供输出=>raise EmployeeDetail.first.inspectI尝试了这两种解决方案,但问题仍然没有解决,offer\u letter\u id不是主键,因此我尝试了第一种解决方案,然后发现了以下错误:“找不到'id'=6的EmployeeDetail”我还尝试了这个:@employees=EmployeeDetail.where(“offer\u letter\u id=?”,参数[:employee\u details][:offer\u letter\u id])。然后我得到了以下错误:“参数数量错误(1代表2)”。该行显示错误:“if@employees.update(employeed_-params)”。当我尝试此操作时:@EmployeeDetail.find_by_offer_letter_id(params[:offer_-id])。并从表单_中为如下方法传递一个值:“{:controller=>“hr”,:action=>“update”,:offer_id=>2}.do | f |%>”。然后记录:2已成功更新,但我希望传递此文本\u字段值“”,而不是“2”(:offer\u id=>2)。请检查此链接:。在这个link pass参数中,将link_抛出到或标记。我了解如何将这个概念用在方法和jquery函数的形式_中。请帮助meI尝试了这两种解决方案,但问题仍然没有解决,offer_letter_id不是主键,所以我尝试了第一种解决方案,然后发现以下错误:“找不到id为6的EmployeeDetail”我也尝试了:@employees=EmployeeDetail.where(“offer_letter_id=?”,参数[:employee_details][:offer_letter_id])。然后我得到了以下错误:“参数数量错误(1代表2)”。该行显示错误:“if@employees.update(employeed_-params)”。当我尝试此操作时:@EmployeeDetail.find_by_offer_letter_id(params[:offer_-id])。并从表单_中为如下方法传递一个值:“{:controller=>“hr”,:action=>“update”,:offer_id=>2}.do | f |%>”。然后记录:2已成功更新,但我希望传递此文本\u字段值“”,而不是“2”(:offer\u id=>2)。请检查此链接:。在这个link pass参数中,将link_抛出到或标记。我了解如何将这个概念用在方法和jquery函数的形式_中。请帮帮我