从rails的下拉菜单中选择项目时如何更新数据库字段?
Posted
技术标签:
【中文标题】从rails的下拉菜单中选择项目时如何更新数据库字段?【英文标题】:How to update database field when an item has been selected from drop down menu in rails? 【发布时间】:2017-02-22 01:09:21 【问题描述】:我是ruby on rails的新手,我有一个下拉菜单栏,当时我想从下拉菜单栏中选择一个项目,数据库表应该根据所选项目更新。 _applied_candidate.html.erb这是我的部分页面
<p>Current Status: <span class="fontstyle3">
<% data = CandidateWorkFlow.select(:workflow_step, :next_step).where("step_id = ?", offer_state.current_step) %>
<% data.each do | d | %>
<%= d.workflow_step %>
<% end %>
</span></p>
<p>Next Status: <span class="fontstyle3">
<% data.each do | d | %>
<select name="user[role_id]" id="workflow_id">
<option value="">Please select</option>
<% d.next_step.split(',').each do | s | %>
<% data1 = CandidateWorkFlow.select(:workflow_step).where("step_id = ?",s) %>
<% data1.each do |l| %>
<option value=<% s %> > <%= l.workflow_step %> </option>
<% end %>
<% end %>
</select>
<% end %>
</span>
</p>
<option value=<% s %> > <%= l.workflow_step %> </option>
这部分代码<%s%>
将存储项目的值,这部分代码<%=l.workflow_step %>
是可选列表,当从可选列表中选择了项目<%=l.workflow_step%>
时应该调用更新方法.
AppliedJob.rb 这是我的模型
class AppliedJob < ActiveRecord::Base
end
applied_jobs 这是我的数据库表 |编号 |用户 ID | job_posting_id |状态 |应用_by_id |当前步骤 | prev_step | 这些是我的领域 JobsController.rb 这是我的控制器
class Candidate::JobsController < Candidate::BaseController
end
但是在上面这段代码中没有更新方法
是否可以借助模型方法更新数据库值?请帮帮我
【问题讨论】:
【参考方案1】:您可以使用表单和 javascript 大致如下:
<% data.each do | d | %>
<%= form_for url: <your-url> do |f| %>
<select name="user[role_id]" id="workflow_id">
<option value="">Please select</option>
<% d.next_step.split(',').each do | s | %>
<% data1 = CandidateWorkFlow.select(:workflow_step).where("step_id = ?",s) %>
<% data1.each do |l| %>
<option value=<% s %> > <%= l.workflow_step %> </option>
<% end %>
<% end %>
</select>
<% end %>
<% end %>
在你的 javascript 中:
$('#workflow_id').change(function()
$('#<your-form-id>').submit();
);
在此之前,您应该制作表单并选择具有相应的 id(因为这是在循环内,所有表单和选择输入都重复相同的 id)
【讨论】:
以上是关于从rails的下拉菜单中选择项目时如何更新数据库字段?的主要内容,如果未能解决你的问题,请参考以下文章
带有 jQuery 的 Rails 中的动态下拉(选择框)菜单不可逆