如何在没有提交表单的情况下将值传递给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
它中的问题工作正常,并将Status
和Cancellation_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 %>