从所选选项的模型中获取属性
Get attribute from model of selected option
我有一个列出所有员工的员工下拉列表。我希望能够 select 一名员工并从模型中获取员工的地址,以便我可以显示它。以下是我的collection_select的代码。
<div class="form-group col-md-2 field">
<%= form.label :employee_id %>
<%= form.collection_select :employee_id, Employee.all, :id, :full_name,{:prompt=>"Select Employee"},{:id=>"emp_select",class:"form-control",:onchange=>"getEmployee();"} %>
</div>
接下来是我用来获取 selected 员工价值的代码,它确实有效。
function getEmployee() {
var selectedVal=$('#emp_select option:selected').val();}
从这里我如何获取被 selected 的员工的地址?
您必须通过 ajax
调用来检索员工的地址。以下是步骤:
- 在您的 rails 应用程序中定义一个操作到 return 员工的地址
json
。
- 对该操作发出 ajax 请求并获取所需信息。
- 将结果渲染到视图中。
有关详细信息,请查看此 link:
https://guides.rubyonrails.org/working_with_javascript_in_rails.html
routes.rb
controller :ajax do
get 'ajax/get_employee_address/:employee_id', action: :get_employee_address, as: :get_employee_address
end
ajax_controller.rb
class AjaxController < ActionController::Base
def get_employee_address
employee = Employee.find(params[:employee_id])
render json: employee.address.to_json
rescue ActiveRecord::RecordNotFound
render json: 'Employee not found', status: 422
end
end
你的js代码
function getEmployee() {
var selectedVal=$('#emp_select option:selected').val();
$.ajax({
url: '/ajax/get_employee_address/' + selectedVal,
success: function (address) {
// Render your address to view
},
error: function () {
// Handle error here or just return nothing
return null;
}
})
}
注意:此ajax端点会将您的员工地址暴露给外部,因此请务必进行身份验证以防止泄露信息。
将地址添加到选项数据属性:
<%= form.select :employee_id,
options_for_select(Employee.all.map {
|e| [e. full_name, e.id, { 'data-address' => e.address }]
}),
{ prompt: "Select Employee" },
{ id: "emp_select", class: "form-control", onchange: "getEmployee();" } %>
更改时用js获取:
function getEmployee() {
var selectedVal=$('#emp_select option:selected').data("address");}
然后插入到需要的地方
我有一个列出所有员工的员工下拉列表。我希望能够 select 一名员工并从模型中获取员工的地址,以便我可以显示它。以下是我的collection_select的代码。
<div class="form-group col-md-2 field">
<%= form.label :employee_id %>
<%= form.collection_select :employee_id, Employee.all, :id, :full_name,{:prompt=>"Select Employee"},{:id=>"emp_select",class:"form-control",:onchange=>"getEmployee();"} %>
</div>
接下来是我用来获取 selected 员工价值的代码,它确实有效。
function getEmployee() {
var selectedVal=$('#emp_select option:selected').val();}
从这里我如何获取被 selected 的员工的地址?
您必须通过 ajax
调用来检索员工的地址。以下是步骤:
- 在您的 rails 应用程序中定义一个操作到 return 员工的地址
json
。 - 对该操作发出 ajax 请求并获取所需信息。
- 将结果渲染到视图中。
有关详细信息,请查看此 link: https://guides.rubyonrails.org/working_with_javascript_in_rails.html
routes.rb
controller :ajax do
get 'ajax/get_employee_address/:employee_id', action: :get_employee_address, as: :get_employee_address
end
ajax_controller.rb
class AjaxController < ActionController::Base
def get_employee_address
employee = Employee.find(params[:employee_id])
render json: employee.address.to_json
rescue ActiveRecord::RecordNotFound
render json: 'Employee not found', status: 422
end
end
你的js代码
function getEmployee() {
var selectedVal=$('#emp_select option:selected').val();
$.ajax({
url: '/ajax/get_employee_address/' + selectedVal,
success: function (address) {
// Render your address to view
},
error: function () {
// Handle error here or just return nothing
return null;
}
})
}
注意:此ajax端点会将您的员工地址暴露给外部,因此请务必进行身份验证以防止泄露信息。
将地址添加到选项数据属性:
<%= form.select :employee_id,
options_for_select(Employee.all.map {
|e| [e. full_name, e.id, { 'data-address' => e.address }]
}),
{ prompt: "Select Employee" },
{ id: "emp_select", class: "form-control", onchange: "getEmployee();" } %>
更改时用js获取:
function getEmployee() {
var selectedVal=$('#emp_select option:selected').data("address");}
然后插入到需要的地方