我的模型中有一个类如下:
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
字段
<%= form_for @area, remote: true, html: {data: {save_warning_form: true}} do |f| %>
<%= form_error(f) %>
<%= f.text_field :cancel_id %>
<%= link_to 'omit', save_loc_values_project_areas_path(area_id: @area.id, cancel_id: @area.cancel_id), remote: true, method: :post %>
<% end %>
我在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
?
谢谢,我真的很感谢你的帮助。
答案 0 :(得分:1)
问题是:您没有使用cancel_id
中设置的view
。
只需将cancel_id
中的params
传递给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 %>
{{1}}
答案 1 :(得分:1)
你可以这样做:
<强> 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