如何从 rails 中的 javascript 调用控制器方法
how to call controller method from javascript in rails
我是 rails ruby 的新手,我想使用多个参数从 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
结束
如何检查控制器方法调用与否
在 routes.rb,请进行以下更改,
resources :jobs do
post :update_work_flow, on: :collection
在Js中,你指定了'post'方法,而在routes中,你指定了'get'方法。尝试更改为 post,代码应该可以工作。
我是 rails ruby 的新手,我想使用多个参数从 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
结束
如何检查控制器方法调用与否
在 routes.rb,请进行以下更改,
resources :jobs do
post :update_work_flow, on: :collection
在Js中,你指定了'post'方法,而在routes中,你指定了'get'方法。尝试更改为 post,代码应该可以工作。