从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>

&lt;option value=&lt;% s %&gt; &gt; &lt;%= l.workflow_step %&gt; &lt;/option&gt;这部分代码&lt;%s%&gt;将存储项目的值,这部分代码&lt;%=l.workflow_step %&gt;是可选列表,当从可选列表中选择了项目&lt;%=l.workflow_step%&gt;时应该调用更新方法. 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的下拉菜单中选择项目时如何更新数据库字段?的主要内容,如果未能解决你的问题,请参考以下文章

在下拉菜单中进行选择时更新数据库

带有 jQ​​uery 的 Rails 中的动态下拉(选择框)菜单不可逆

当用户从下拉菜单中选择选项时,如何从数据库中打印记录?动态程序

如何从表格的下拉菜单中删除先前选择的选项?

Rails表单中的下拉菜单和常量的使用

使用 AJAX 选择下拉菜单选择器时遇到问题