是否有可能Rails形成helper get block作为提交按钮?

时间:2017-02-17 03:03:46

标签: html ruby-on-rails forms

我想在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不承认这是提交按钮。

有谁知道如何实现这一目标?感谢。

2 个答案:

答案 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事件处理程序。它使代码更有条理。