如何从rails中的下拉菜单中选择项目时更新数据库字段?

时间:2016-10-13 03:54:04

标签: jquery mysql ruby-on-rails ruby ruby-on-rails-3

我是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 %>的这一部分是可选列表{{1然后应该调用update方法。 AppliedJob.rb 这是我的模特

<%=l.workflow_step%>

applied_jobs 这是我的数据库表 的 | id | user_id | job_posting_id |状态| applied_by_id | current_step | prev_step | 这些是我的领域 JobsController.rb 这是我的控制器

class AppliedJob < ActiveRecord::Base 
end

但是在上面的代码中没有更新方法

是否可以借助模型方法更新数据库值?请帮帮我

1 个答案:

答案 0 :(得分: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并选择输入)