【发布时间】:2015-07-03 10:50:34
【问题描述】:
我有一个表单,我想仅使用 JavaScript 函数中的 ajax 调用来调用 rails 控制器方法。但未能做到这一点。请检查我下面的代码。
payment.html.erb:
<script type="text/javascript">
function check_dropdown(){
$.ajax({
url: "/payments/check_type",
type: 'GET'
});
}
</script>
<%= form_for :payment,:url => {:action => "check_type" },remote: true do |f| %>
<div class="totalaligndiv">
<div class="input-group bmargindiv1 col-md-6 pull-left"><span class="input-group-addon text-left"><div class="leftsidetextwidth">Type :</div></span>
<%= f.select(:s_catagory,options_for_select([['Wood','Wood'],['Puja Samagree','Puja Samagree'],['Sweeper','Sweeper'],['Photo Grapher','Photo Grapher'],['Burning Assistant','Burning Assistant']],selected: "Type"),{},{:class => 'form-control',:onchange => 'check_dropdown();'}) %>
</div>
<div class="input-group bmargindiv1 col-md-6 pull-left"><span class="input-group-addon text-left"><div class="leftsidetextwidth">Select Vendor :</div></span>
<div id="name-option">
</div>
</div>
<div class="clearfix"></div>
<div class="tbpaddingdiv1 text-center">
<button type="submit" class="btn btn-success">Submit</button>
</div>
</div>
<% end %>
application.html.erb:
<!DOCTYPE html>
<html>
<head>
<title>SwargadwaraPuri</title>
<script src="/assets/moment-with-locales.js"></script>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<script src="/assets/bootstrap.min-2.0.js"></script>
<script src="/assets/bootstrap-datetimepicker.js"></script>
<link rel="icon" href="/assets/favicon.png" type="image/x-icon" />
<link rel="stylesheet" href="/assets/bootstrap-2.0.css">
<link rel="stylesheet" href="/assets/plugins-2.0.css">
<link rel="stylesheet" href="/assets/main-2.0.css">
<link rel="stylesheet" href="/assets/themes-2.0.css">
<link rel="stylesheet" href="/assets/bootstrap-datetimepicker.css">
</head>
<body class="login no-animation" >
<%= yield %>
<footer>
<div class="pull-right">
Maintained <i class="fa fa-pencil text-danger"></i> by <strong><a href="http://www.oditeksolutions.com" target="_blank">Oditek Solutions</a></strong>
</div>
<div class="pull-left">
<span id="year-copy"></span> © <strong><a href="javascript:void(0)" target="_blank">Swargadwar, Puri Municipality</a></strong>
</div>
</footer>
</div>
<a href="#" id="to-top"><i class="fa fa-chevron-up"></i></a>
<script type="text/javascript" src="/assets/bootstrap-filestyle.min.js"></script>
<script src="/assets/plugins-2.0.js"></script>
<script src="/assets/main-2.0.js"></script>
</body>
</html>
routes.rb:
get "payments/check_type" => "payments#check_type"
payments_controller.rb:
class PaymentsController < ApplicationController
def payment
@payment=Vendor.new
respond_to do |format|
format.html
format.js
end
end
def check_type
if params[:payment][:s_catagory]
@payment=Vendor.find_by_s_catagory(params[:payment][:s_catagory])
@v_name=Vendor.where(:s_catagory =>params[:payment][:s_catagory] ).pluck(:v_name)
end
end
end
我想在onchange 事件触发时调用check_type 方法。
【问题讨论】:
-
如果您查看生成的 html,可能会更容易找到此问题的原因。
-
@Kevin:你能帮我解决这个问题吗?
-
首先我们必须弄清楚问题是什么。如果我无法将服务器端代码转换为 html 输出,那么将一堆服务器端代码转储到问题中也无济于事。
标签: jquery ruby ajax ruby-on-rails-3.2