此问题与this one非常相似,但我的问题并未完全解决。
所以我确实有一个带有许多按钮的表格。每个按钮都有一个不同的提交消息:使用rails submit_tag
helper生成HTML,如
<!-- AJAX buttons -->
<input type="submit" value="Preview" name="commit">
<input type="submit" value="Send me a preview" name="commit">
<!-- POST buttons -->
<input type="submit" value="Send to me" name="commit">
<input type="submit" value="Send to all" name="commit">
表单最初是非AJAX,但我想通过顶部两个按钮通过AJAX提交。但是(并且在上述问题中没有解决这个问题),我还必须确保在参数中传递正确的提交消息。
使用像这样的代码
<% text = "Preview" # etc.
<%= submit_tag( text,
onclick: "
var form = $(this).closest('form');
form.data( 'remote', 'true' );
form.submit();
form.removeAttr('data-remote');
return false") %>
不起作用,因为调用form.submit()
会在没有按下按钮的提交消息的情况下提交表单。
该表单应多次使用:示例场景将
答案 0 :(得分:0)
好的,这是我找到的解决方案
Rails视图(ajax
这里只是一个布尔值,我们是否希望按钮在AJAX中执行)
<%= submit_tag( text, data: data,
onclick: (ajax ? "ajaxSubmit(event)" : ""), class: html_class) %>
javascript代码
function ajaxSubmit(e){
e.preventDefault();
var target = $(e.target)
var form = target.closest('form')
var tmp = form.data('remote')
var input = $('<input />').attr('type', 'hidden')
.attr('name', "commit")
.attr('value', target.val())
.appendTo(form);
form.data('remote', true)
form.submit()
if(!tmp){
form.removeAttr('data-remote');
}
input.remove()
return false;
}