我想在Rails中使用block作为提交按钮。正常用法是这样的。
<%= form_tag("sample_path", method: "post") do %>
<%= hidden_field_tag(:post_id, "5") %>
<%= submit_tag("Search") %>
<% end %>
但我想做的就是下面。
<%= form_tag("sample_path", method: "post") do %>
<%= hidden_field_tag(:post_id, "5") %>
<div>
<div>foo</div>
<div>bar</div>
</div>
<% end %>
我想使用block作为提交按钮。但Rails不承认这是提交按钮。
有谁知道如何实现这一目标?感谢。
答案 0 :(得分:3)
您有几个选择:
1)您可以使用button_tag:
function checkmedia(url, format) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
progress = this.responseText;
document.getElementById("progress").innerHTML = this.responseText;
if (progress != "100") {
setTimeout(checkmedia.bind(null, url, format), 10000);
}
}
};
xhttp.open("GET", 'checkfilecount.php?userurl=' + url + '&act=run&format-option=' + format, true);
xhttp.send();
}
2)添加onclick js事件:
<%= button_tag(type: 'submit') do %>
<div>foo</div>
<div>bar</div>
<% end %>
3)将事件处理程序绑定到“click”JavaScript事件:
<div onclick="$('#form-id').submit();">
<div>foo</div>
<div>bar</div>
</div>
答案 1 :(得分:0)
#submit_tag只是呈现常规HTML输入标记。
submit_tag "Search"
# => <input name="commit" type="submit" value="Search" />
仅使用HTML,您可以使用<button type='submit'>
或<input type='submit'>
标记提交表单。如果您想使用<div>
提交表单,可以在要用于提交表单的元素上放置onclick
处理程序。
<%= form_tag("sample_path", method: "post") do %>
<%= hidden_field_tag(:post_id, "5") %>
<div onclick="$('#your_form_id_here')[0].submit();>
<div>foo</div>
<div>bar</div>
</div>
<% end %>
但我建议在onclick
文件中为该特定视图设置.js
事件处理程序。它使代码更有条理。