如何从rails中的javascript调用控制器方法

时间:2016-10-13 06:44:18

标签: javascript ruby-on-rails ruby ruby-on-rails-3

我是ruby on rails的新手,我想从带有多个参数的javascript调用控制器方法。我试过但没有输出。 的 _applied_candidate.html.erb

<p>Next Status: <span class="fontstyle3">

          <select name="workflow_id" id="workflow_id" onchange="updateItem('workflow_id', <%= applied_candidate.id %>, <%= job.id %>)">         
            <% data.each do | d | %>                  
                <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 %>                   
            <% end %>
          </select>  
        </span>
        </p>


 <script type="text/javascript">
    function updateItem(item, userID, jobID) {
    var e = document.getElementById(item);
    var val = e.options[e.selectedIndex].value; 
    new Ajax.Request('/jobs/update_work_flow', { 
                  method: 'post',
                  parameters: { selected_id: item, u_id: userID, job_id: jobID }
                });


};</script>

的routes.rb

resources :jobs do
    get :update_work_flow,  on: :collection 

jobs_controller.rb

def update_work_flow
redirect_to root_path

如何检查被调用的控制器方法

1 个答案:

答案 0 :(得分:2)

在routes.rb上,请进行以下更改

resources :jobs do
    post :update_work_flow,  on: :collection 

在Js中,您指定为“post”方法,而在路径中,您指定了“get”方法。尝试更改为发布,代码应该有效。