如何在没有提交表单的情况下将值传递给rails模型方法?

我的模型中有一个类如下:

class Project::Area < ActiveRecord::Base attr_accessor :cancel_id def save_loc_values update_record = Project::Loc.find_by_Project_Reference(project.Project_Reference) update_record.update_attributes({ Status: 'D', Cancellation_Date: DateTime.now().strftime("%Y-%m-%d %T.%L"), CancellationReason_id: self.cancel_id }) end end 

在我的form ,我使用attr_accessor字段

      

我在我的controller创建了一个路由和我的自定义方法,如下所示,

 def save_loc_values @area = Project::Area.find(params[:area_id]) @return = @area.save_loc_values end 

它中的问题工作正常,并将StatusCancellation_Date的值保存到另一个数据库表中。 但是On change cancel_id值没有保存。 如何传递和保存onchange cancel_id

谢谢,我真的很感激你的帮助。

你可以这样做:

HTML

  <%= link_to_function "ommit", "ommit('#{@ommit.id}')" %> 

js

 function ommit(id) { $.ajax({ url:"/your_controller_name/save_loc_values", dataType: "json", data: "ommit_id=" + id + "&cancel_id=" + $('#cancel_id').val(), type: 'GET/POST'# your method type }); } 

控制器

 def save_loc_values @area = Project::Area.find(params[:area_id]) @return = @area.save_loc_values(params[:cancel_id]) end 

型号

 def save_loc_values(cancel_id) update_record = Project::Loc.find_by_Project_Reference(project.Project_Reference) update_record.update_attributes({ Status: 'D', Cancellation_Date: DateTime.now().strftime("%Y-%m-%d %T.%L"), CancellationReason_id: cancel_id }) end 

问题是:您没有使用在view中设置的cancel_id

只需将cancel_id中的cancel_id传递给save_loc_values操作,如@return = @area.save_loc_values(params[:cancel_id])并将其与update_attributes

更新:

 <%= form_for @area, url: save_loc_values_project_areas_path, method: :post remote: true, html: {data: {save_warning_form: true}} do |f| %> <%= form_error(f) %> <%= f.text_field :cancel_id %> <%= f.submit 'omit' %> <% end %>