Javascript 如何访问rails中form_标记的响应?
我有一个表格,它在数据库中提交了许多信息。这个表格在一个模式弹出窗口中。单击submit标记时,将显示一个新的模式弹出窗口,其中有两个单击按钮,用于显示表单已提交的数据。 现在的问题是,当控制器调用完成时,这些按钮在单击时不会执行任何操作。 因此,我想在点击submit按钮的表单弹出窗口中添加一个微调器。当响应为真/成功时,将显示下一个弹出窗口 我的代码如下所示:Javascript 如何访问rails中form_标记的响应?,javascript,ruby-on-rails,ruby,json,Javascript,Ruby On Rails,Ruby,Json,我有一个表格,它在数据库中提交了许多信息。这个表格在一个模式弹出窗口中。单击submit标记时,将显示一个新的模式弹出窗口,其中有两个单击按钮,用于显示表单已提交的数据。 现在的问题是,当控制器调用完成时,这些按钮在单击时不会执行任何操作。 因此,我想在点击submit按钮的表单弹出窗口中添加一个微调器。当响应为真/成功时,将显示下一个弹出窗口 我的代码如下所示: form: = form_tag("/system/upload_form", method: 'post', enctype:
form:
= form_tag("/system/upload_form", method: 'post', enctype: 'multipart/form-data', remote: true) do
...
...
=submit_tag("Submit",id: "submit_button", class: 'btn btn-default')
controller:
sys = @system.update!(system_params)
respond_to do |format|
format.js
format.json { render :json => sys }
js:
$("#submit_button").click(function() {
$('#modal_define_system').modal('hide'); // current popup
$('#next-page').modal('show'); // next popup
});
现在我想知道如何以及在哪里访问从控制器返回的json对象或sys值
我试过:
向窗体中添加一个类,然后
$('.form_class').bind('ajax:success', function() {
console.log(sys);
});
但无法成功。请提供帮助和建议。如果需要添加更多的代码或解释,请进行注释。您使用的是带有
remote true
的formform_标签,它发送的ajax请求是js格式的,而不是json格式的。如果您在js块中呈现json响应,而不是像下面这样在控制器中呈现json响应,它应该可以工作
respond_to do |format|
format.js { render :json => sys } #this will be rendered
format.json { render :json => sys } #this won't
end
或者,您可以像这样呈现javascript文件
$('#results_div').html("<%= @system.try(:title) %>")
$('#results_div').html(“”)
在update.js.erb中
希望这能有所帮助。您使用的是带有remote true
的formform_标记,它使用js格式而不是json格式发送ajax请求。如果您在js块中呈现json响应,而不是像下面这样在控制器中呈现json响应,它应该可以工作
respond_to do |format|
format.js { render :json => sys } #this will be rendered
format.json { render :json => sys } #this won't
end
或者,您可以像这样呈现javascript文件
$('#results_div').html("<%= @system.try(:title) %>")
$('#results_div').html(“”)
在update.js.erb中
希望这对您有所帮助。扩展maximus的代码,您可以使用ajax提交可以
根据你的情况,对你来说更容易。你可以试试
$("#theForm").ajaxSubmit({url: '/system/upload_form',
type: 'post'}).success(function(data){
$('#newModalContainer').html(data);
});
在控制器中,用提交的值呈现要显示的模式的html,这些值可以在实例变量中传递。
差不多
def upload_form
#your logic
render :partial => 'new_modal_to_show'
end
这是一个通用结构,您可以将其更改为相关值。希望对您有所帮助:-)扩展maximus的代码,您可以使用ajax提交可以
根据你的情况,对你来说更容易。你可以试试
$("#theForm").ajaxSubmit({url: '/system/upload_form',
type: 'post'}).success(function(data){
$('#newModalContainer').html(data);
});
在控制器中,用提交的值呈现要显示的模式的html,这些值可以在实例变量中传递。
差不多
def upload_form
#your logic
render :partial => 'new_modal_to_show'
end
这是一个通用结构,您可以将其更改为相关值。希望能有所帮助:-)如果这听起来很愚蠢,那么很抱歉,但是我如何在update.js.erb中访问sys?您可以使用实例变量@system
,因为您已经定义了它。如果这听起来很愚蠢,那么很抱歉,但是如何在update.js.erb中访问sys?您可以使用实例变量@system
,因为您已经定义了它。这意味着我需要更改当前的实现??我在表格中添加了控制器链接,如果您可以。。。ajax单击提交按钮提交表单。并在同一页上获得响应,并在部分页面中显示。您也可以选择通过js格式响应提供的解决方案@maximus,并在那里设置变量。这意味着我需要更改当前的实现??我在表格中添加了控制器链接,如果您可以。。。ajax单击提交按钮提交表单。并在同一页上获得响应,并在部分页面中显示。您也可以使用js格式响应提供的solution@maximus,并在那里设置变量。