【问题标题】:how to call controller method from javascript in rails如何在rails中从javascript调用控制器方法
【发布时间】:2017-02-22 04:00:12
【问题描述】:

我是 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

结束

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

【问题讨论】:

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


    【解决方案1】:

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

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

    在 Js 中,你指定了 'post' 方法,而在路由中,你指定了 'get' 方法。尝试更改为 post,代码应该可以工作。

    【讨论】:

    • 感谢您的回复,我将 get 替换为 post 但仍然无法正常工作。如果您对此任务有其他选择,请建议我..
    猜你喜欢
    • 1970-01-01
    • 2012-06-12
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多