我正在尝试使用select_tag查找客户ID,然后将其发送到控制器以呈现显示页面。
<%= select_tag( "cust_id", options_from_collection_for_select(@customers.by_last_name, :id, :last_name, (@customers_id.nil?) ? nil : @customers_id), {:class => 'custTag'}) %>
jquery代码
$(document).ready
$(document).on('change', '.custTag', function(){
var custId = $(this).val();
alert (custId);
$.get('/customers/custId');
});
我遇到两个问题:
ActiveRecord::RecordNotFound (Couldn't find Customer with 'id'=custId)
。($.get('/customers/6559');)
中,控制器会以Processing by CustomersController#show as '*/*'
回复。没有呈现任何内容 - 服务器确实收到输入的ID并且似乎正在处理请求,就像我直接在浏览器地址栏中输入了请求一样
我提前为我的无知道歉 - 我对这个过程很新。
答案 0 :(得分:0)
两个问题值得两个答案。
1)Rails路由具有URL参数,意思是/customers/:id
其中:id
是参数。您已经选择并且JQuery代码没问题,因为您已经确认了自己,但是您需要将custId
添加到$.get
中的字符串中以发送实际ID。
目前您的请求是/customers/custId
,因此它正在尝试查找id = custId
...
$.get('/customers/' + custId);
2)需要处理AJAX否则没有任何反应。你的请求被发送,响应被发送回你的JS,然后什么都没有,因为没有定义。
你想要发生什么?您是否尝试过使用HTML而不是JS?
我说你想要的是将页面重新渲染为show
,所以......
$.get('/customers/' + custId).done(function(data){
$(document).html(data) // something like this to replace the content
})
这些事情的经验法则是,首先使用HTML!如果您认为合适,请使用AJAX。
祝你好运!